C ;浮点异常;没有./操作员

C++; Floating Point exception; Without ./ operator

本文关键字:操作员 没有 异常      更新时间:2023-10-16

下面的示例来自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_1_1mat.html

./不是操作员。点与1结合,使其成为双常数。等效于此:

1.0 / (i+j+1)

只短一点。

当您省略DOT时,使用整数算术评估表达式,除了0, 0以外,所有条目都为所有零。

.字符是1.双文字的一部分。/是算术操作员

1. / (i+j+1);

的结果是double类型的值。省略.字符使其成为1的整数字面,并且表达式变为:

1 / (i+j+1);

两个操作数都是整数值,结果是整数值。C 代码中的空格对编译器没有任何不同。出于可读性原因,语句应在适当的地方包括空间:

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