赵旭升 发表于 2018-4-8 21:56:08

课后作业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,然后系统判断为真后短路

BIGLUO 发表于 2018-4-9 03:11:29

先求余乘除从左到右

理想小青年 发表于 2018-4-9 10:32:10

当它的第一个操作数为非0时,不对第二个操作数进行运算
"||"的优先级比"&&"低
所以++y , ++z 没有运算所以两个是0
在||之前,++x已经运算过了所以是1

页: [1]
查看完整版本: 课后作业S1E10 第六小题,感觉小甲鱼的答案不对