我不太了解这种情况下的if语句如何工作。它评估x != 0
语句,当不再适用时,它将z
分配给y
,然后将break
分配给if语句?
int main()
{
int x, y, z, i;
x = 3;
y = 2;
z = 3;
for (i = 0; i < 10; i++) {
if ((x) || (y = z)) {
x--;
z--;
} else {
break;
}
}
printf("%d %d %d", x, y, z);
}
最佳答案
让我们将其分解为更小的位。
if (x)
与if (x != 0)
相同。如果是x != 0
,那么您知道条件是true
,因此您无需执行if
的其他部分。 false
,则y = z
将z
分配给y
并返回y
的最终值。 if (y = z)
等效于y = z; if (y != 0)
因此,从第一点和第三点,我们可以理解:
if ((x) || (y = z)) {
doSomething();
}
else {
doSomethingElse();
}
是相同的 :
if (x != 0) {
doSomething();
}
else {
y = z;
if (y != 0) {
doSomething();
}
else {
doSomethingElse();
}
}
的确,虽然它不是特别易读的代码。
关于c - 'if((x) || (y=z))'如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42680027/