cout << 0 * -5 << endl; // this is zero
cout << 0 * -5.0 << endl; // this is negative zero
我是c ++的新手,我不明白为什么乘以一个double会影响零次,因为它应该总是为零。
答案 0 :(得分:2)
在第一行,
cout << 0 * -5 << endl;
0和-5都是有符号整数。整数不区分0
和-0
。
在第二行,
cout << 0 * -5.0 << endl;
第二个数字是double,因此0也被提升为double,IEEE浮点定义了0
和-0
值。
答案 1 :(得分:1)
它来自整数和双精度计算之间的差异。第一个表达式在两个整数之间完成,但第二个表达式在两个浮点数之间。