#include<stdio.h>
void main(){
int x,y,z;
x=y=z=1;
z=++x||++y&&++z;
printf("%d %d %d \n",x,y,z);
getch();
}
输出为 2 1 1 !我不明白为什么...如果我们按照运算符的优先顺序进行操作,则无法解释。请帮忙
最佳答案
逻辑或
(||
)引入一个序列点。它的左侧被评估。然后,当且仅当产生 0/false 时,才对右侧求值。
在这种情况下,++x
结果为 2,因此永远不会计算右侧。这反过来意味着 y
和 z
保持为 1
。
关于c - 解释c程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287750/