enum bool{true,false};
void main()
{
if(true==(2==3))
{
printf("true\n");
}
else
{
printf("false\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在枚举中,true
常量值为0,并且false
常量值为1.
在C中,相等比较(2 == 3)的结果是0表示不相等,或1表示相等.你的代码是:
if ( 0 == (2==3) )
Run Code Online (Sandbox Code Playgroud)
要么
if ( 0 == 0 )
Run Code Online (Sandbox Code Playgroud)
这显然是真的.
这是因为enum
s in 的默认起点C
是0,这恰好是假的,不是真的.
你应该使用enum bool {false, true}
.请不要使用像这样的可憎之物
if (x == true)
if (x == false)
Run Code Online (Sandbox Code Playgroud)
一点都不 你会好起来的
if (x)
if (!x)
Run Code Online (Sandbox Code Playgroud)
无论如何,使用true
和false
设置布尔值,但你永远不应该那样测试它们.特别是因为定义为零/非零,而不是零/一.
我一直很喜欢(如果你真的需要):
#define false (1==0)
#define true (1==1)
Run Code Online (Sandbox Code Playgroud)
这至少可以保证有效.