C 为什么输入if语句后1是变量var的值?
在这里您可以看到清单,我知道它是if语句中的赋值,而不是比较。所以请不要建议你更了解它。我只是想知道为什么在if语句中赋值之后,var的值是1C 为什么输入if语句后1是变量var的值?,c,comparison,logical-operators,C,Comparison,Logical Operators,在这里您可以看到清单,我知道它是if语句中的赋值,而不是比较。所以请不要建议你更了解它。我只是想知道为什么在if语句中赋值之后,var的值是1 int var = 0; if(var = -5 || 5) { // Value of var is 1, but why? Shouldn´t it be -5 or 5? printf("%d", var); } 在C(x | | y)中,是一个布尔表达式——一个结果总是true(1)或false(0)的表达式。 这同样适用于&&
int var = 0;
if(var = -5 || 5)
{
// Value of var is 1, but why? Shouldn´t it be -5 or 5?
printf("%d", var);
}
在C(x | | y)
中,是一个布尔表达式——一个结果总是true(1)或false(0)的表达式。
这同样适用于&&
(和)和代码>(不是)
而且,if(x=y)
与if(y)
相同,其副作用是将y指定给x。即:
评估:
if (var = -5 || 5) ...
是吗
还是
它是第二个,因为| |具有更高的优先级:
因为:
(-5 || 5) ---> 1
。。。
我们现在有
if (var = 1) ...
1被分配给var(=
是分配,=
是值相等)
因为在C中,语句a=b
也是一个表达式,它的新值是新值如果a,我们现在有:
if (var) ...
。。。因为测试是真的,因为var
是1
,而非零整数在C中是真的。如果添加大括号,它更有意义:var=(-5 | 5)
你是说=
?你的意思是如果(var==5 | | var==5)
?代码中必须有比计算-5 | | 5
更高的目的,两个操作数都是真的。
“不应该是-5或5”表明它们确实需要赋值。@Carcigenicate您的意思是不是?新的程序员经常犯这样的错误,试图制造多个或条件。这看起来像是“我希望我能这样写,得到这样那样的结果。但看起来我不能。为什么?”问题。相反,请学习C语法及其功能,然后使用它来实现所需的结果。C语言不是一种可以通过实验学习的语言。
if (var = 1) ...
if (var) ...