簡體   English   中英

C ++; 浮點異常; 沒有./運算符

[英]C++; Floating Point exception; Without ./ operator

下面的示例來自OpenCv文檔[1]。

Mat H(100, 100, CV_64F);
for(int i = 0; i < H.rows; i++)
    for(int j = 0; j < H.cols; j++)
        H.at<double>(i,j)=1./(i+j);

這工作得很好。 但是最后一行是./運算符? 如果我用/替換它,則會給我浮點異常。

因此,在兩種情況下,當i和j為0時,我們都是無窮大。 那為什么第二種情況我們會得到浮點異常呢?

[1] http://docs.opencv.org/trunk/d3/d63/classcv_1_1Mat.html

./不是運算符。 點與1綁定,使其成為雙常量。 等效於:

1.0 / (i+j+1)

只是短一點。

省略點時,將使用整數算術對表達式求值,除0, 0所有條目的全零。

. 字符是1. double文字的一部分。 /是算術運算符,因此右側表達式變為:

1. / (i+j+1);

結果是double類型的值。 省略. 字符使得文字的整數1和表達式變為:

1 / (i+j+1);

其中兩個操作數都是整數值,結果是整數值。 C ++代碼中的空格對編譯器沒有影響。 出於可讀性原因,該語句應在適當的地方包含空格:

H.at<double>(i,j) = 1. / (i+j+1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM