在这里您可以看到列表:
int var = 0;
if(var = -5 || 5)
{
// Value of var is 1, but why? Shouldn't it be -5 or 5?
printf("%d", var);
}
我不想将var
与-5
或5
进行比较;我只想了解为什么if(var = -5 || 5)
将1
分配给var
。
支票
if(var = -5 || 5)
无法按预期工作。那并不意味着“检查var是否等于5或等于-5”。
首先var = -5 || 5
是一个赋值,它被评估为逻辑或介于-5和5之间。在C中,每个不同于0的整数都被评估为true,因此您要为var
赋值true || true = 1
]。比较运算符为==
。所以您的意思是var == -5
。
逻辑的另一个操作数或为5
,其评估为true。即使对同一变量进行不同的相等性检查,也需要变量的[[“ repetition”]。所以您的意思是var == 5
。
if(var == -5 || var == 5)
{
}
if(var == 5 || var == -5)
,您现在拥有的表达式将分配给var
布尔求值的结果;如果var
为5或-5,则为1;如果不是,则为0。