2014-01-12 128 views
-5
if(number == 0) { 
//do something 
} 

由于零在C++中的计算结果为false,如果数字为零,它将在if条件中为false。 我该如何检查它是否真的是数字零?如何检查数字是否为零?

+4

你的代码没问题。当'number'为'0'时,'number == 0'为'1',这是真的。 – Barmar

+1

您的代码将起作用。测试它。 –

+1

是的,我想我得到了一个错误的问题... – Joshua

回答

0

如果number是浮点数,则可能会遇到一些麻烦。如果这是你的情况,只需比较一个合理的小零。看看这篇文章http://floating-point-gui.de/errors/comparison/我相信你可以更好地理解这个问题。 简单的例子:

#define epsilon 0.0001; 
if(fabs(number) < epsilon){ 
    .... 
} 

选择正确的小量可能会非常棘手,这取决于应用。

2

有一种误解,在这里:在if说法是不看好0不变或number价值,但关于operator==返回值。

重点不在于如果数字或0本身等于“假”,但是如果==返回true或不是。如果操作数具有相同的值,则返回true。

至于整体类型促销工作,上述断言适用于任何一对整数类型。

如果number别的东西,则所有涉及向numberint之间的共同类型的兑换(因为0是一个int)和所述“精确”的number值可以具有,或在方式operator==被实现这两种类型之间。