我在想,true
是否等同于 1,false
是否等同于 0,是怎么回事?
false == 0
和true = !false
。也就是说,任何不为零且可以转换为布尔值的东西都不是false
,因此它必须是true
。以下是一些例子,以澄清这个概念:
if(0) // false
if(1) // true
if(2) // true
if(0 == false) // true
if(0 == true) // false
if(1 == false) // false
if(1 == true) // true
if(2 == false) // false
if(2 == true) // false
cout << false // 0
cout << true // 1
true
等于1
,但任何非零的int
会被评估为true
,但与true
不相等,除了1
。
是的,那是正确的。"布尔变量只有两个可能的值:true(1)和false(0)。 cpp教程关于布尔值
true
评估为1
,false
评估为0
,从整数/浮点类型转换时,它表示零值,因此0
和-0
评估为false
,所有其他值评估为true
。bool
是一种整数类型,但不是整数。在内部,编译器可能决定使用值3作为false
和64作为true
,因为标准对其内部表示没有任何限制。 - ABaumstumpf
true == 1
的意思是“真等于1”。其他非零值也为真,但并不等同于“真”。 - dan04true
并不是一个int
,仅仅因为它可以被转换成一个。 - Andrew Marshallint(true)==1
,bool(2)==true
,但是2 != int(true)
。 - MSalterstrue
和“等于”true
之间的差异。 - Andrew Marshall