真等于1,假等于0吗?

71

我在想,true 是否等同于 1,false 是否等同于 0,是怎么回事?

2个回答

134

false == 0true = !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


26
true == 1 的意思是“真等于1”。其他非零值也为真,但并不等同于“真”。 - dan04
@dan 不,那甚至没有意义。你基本上只是说“true != true”。我认为你想要表达的是“true == 2”,但是“(int)true != 2”。true并不是一个int,仅仅因为它可以被转换成一个。 - Andrew Marshall
24
不,他是正确的。我会澄清隐式转换。 int(true)==1bool(2)==true,但是 2 != int(true) - MSalters
2
我明白你的意思,更新了答案以清楚地表明“评估”为true和“等于”true之间的差异。 - Andrew Marshall
2
2也是true吗?这意味着任何非零值都是true? - user6288471
2
@user6288471 是的,没错。 - A N

-1

是的,那是正确的。"布尔变量只有两个可能的值:true(1)和false(0)。 cpp教程关于布尔值


bool没有整数值。C++规定,将bool转换为整数类型时,true评估为1false评估为0,从整数/浮点类型转换时,它表示零值,因此0-0评估为false,所有其他值评估为truebool是一种整数类型,但不是整数。在内部,编译器可能决定使用值3作为false和64作为true,因为标准对其内部表示没有任何限制。 - ABaumstumpf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接