可以将每个表达式的值视为真或假。如果表达式的值为0,则返回false,否则返回true。(这种约定是从C继承来的,编写低级软件(如操作系统和实时控制软件时)时经常会使用这种约定,这种用法可能成为检测掩码或变量的所有位是否为0的简便方式)
在早期的C++版本中,真和假都用整数来表示;新的ANSI标准引入了bool类型。bool类型只有两个可能的取值:false或true。
所有关系运算符都返回一个bool值,即true或false。
考虑下面的例子:
if ((x = a + b)==10)
即使a和b的和不是10,该表达式也会返回一个值。另外,无论什么情况下,a与b的和都将被赋给x。见下列测试代码:
在C++中,0被解释为代表假,其他值被解释为真。表达式总是有一个值,许多程序员在if语句中利用这一特点。例如下面的语句的含义为,如果x不为0,将其设置为0:
if (x) //if x is true (nonezero)
x = 0;
这有点玩技巧,如果写成下面将更清楚:
if (x != 0) // if x is not zero
x = 0;
这两种写法都合法,但后者更清楚。良好的编程习惯是,用前一种方法来判断逻辑真与假,而不使用它来判断非0值。
下面的两条语句也是等效的:
if (!x) //if x is false (zero)
if (x == 0) //if x is zero 如果要判断的是x的数学值而不是逻辑状态,这条语句更清晰
考虑下面的代码