课后作业S1E10 第六小题,感觉小甲鱼的答案不对
我的写法如下:a = ( (b-c)1 || ( (a%b)2 && (c/d)3 )4 )5
因为我又做了一个测试:
#include <stdio.h>
int main()
{
int x,y,z;
x=y=z=0;
++x||++y&&++z;
printf("a=%d, b=%d , c=%d",x,y,z);
return 0;
}
结果为 a = 1,b = 0,c = 0;
所以肯定是先计算了++x,然后系统判断为真后短路 先求余乘除从左到右 当它的第一个操作数为非0时,不对第二个操作数进行运算
"||"的优先级比"&&"低
所以++y , ++z 没有运算所以两个是0
在||之前,++x已经运算过了所以是1
页:
[1]