我知道在C和C++中,当将bools转换为int时,(int)true == 1
和(int)false == 0
。我想知道关于反向投射......在C/C++中将int转换为bool
在下面的代码中,以下所有断言对于使用Visual Studio 2013和KeilμVision5编译的.c文件都适用。注意(bool)2 == true
。
C和C++标准对于将非零非整数转换为布尔值有什么作用?这种行为是否被指定?请包括引文。
#include <stdbool.h>
#include <assert.h>
void TestBoolCast(void)
{
int i0 = 0, i1 = 1, i2 = 2;
assert((bool)i0 == false);
assert((bool)i1 == true);
assert((bool)i2 == true);
assert(!!i0 == false);
assert(!!i1 == true);
assert(!!i2 == true);
}
不的Can I assume (bool)true == (int)1 for any C++ compiler?重复:
- 在反向方向上铸造(INT - >布尔)。
- 没有讨论那里非零,非一个值。基本类型的
所有非零整数都应该转换为true。我没有规格,所以我没有发布答案。 C/C++中的 – yizzlez
任何!0为真,0为假。所以,2确实如此。 (2!= 0)== true。 – ydobonebi
@SergeyK。你真的读过这个问题吗? – emlai