C 请解释一下这个结果
我在尝试c编程,我写了一个小代码,但我无法理解这一点C 请解释一下这个结果,c,operators,logical-operators,C,Operators,Logical Operators,我在尝试c编程,我写了一个小代码,但我无法理解这一点 #include<stdio.h> int main() { int x,y,z,k; x=y=z=k=1; z=x++||y++&&k++; printf("%d %d %d %d\n",x,y,z,k); } #包括 int main() { int x,y,z,k; x=y=z=k=1; z=x++|y++&&k++; printf(“%d%d%d%d\n”,x,y,z,
#include<stdio.h>
int main()
{
int x,y,z,k;
x=y=z=k=1;
z=x++||y++&&k++;
printf("%d %d %d %d\n",x,y,z,k);
}
#包括
int main()
{
int x,y,z,k;
x=y=z=k=1;
z=x++|y++&&k++;
printf(“%d%d%d%d\n”,x,y,z,k);
}
我希望输出为2 1 2
因为&&的优先级大于||
但是输出是2 1
请解释。C使用,因此当
x++
被计算为true
时,其余的表达式不会被计算,并且不会发生增量。C使用,因此当x++
被计算为true
时,其余的表达式不会被计算,没有增量。但是&&的优先级大于| |所以(x++| y++)和k++都应该被评估,我同意y++不会被执行,因为x++是真的,但是k++应该正确执行?不。只要x++
的计算结果为true
,就足够了。无需使用| |
的右手部分执行任何操作。这个答案是正确的;请阅读本文,也请参见,但&&的优先级高于| |,因此(x++| | y++)和k++都应该进行评估,我同意y++不会执行,因为x++是正确的,但k++应该正确执行?不。只要x++
的计算结果为true
,就足够了。无需使用| |
的右手部分执行任何操作。这个答案是正确的;请阅读此内容,另请参阅