岁月安好静默如初行书:a=5;b=6;c=7;d=8;m=2;n=2; (m=a>b)&&(n=c>d); 问运算后n的值,答案是2,WHY?

来源:百度文库 编辑:高校问答 时间:2024/04/29 20:27:44

>的优先级比=高,所以先算a>b,结果是0,赋给m,这时&&的左边是0,则右边不管是真还是假,结果都为0,因此,在大部分编译器中,此时&&右边不再计算,因此n=c>d没有计算,最终n仍为2。

因为(m=a>b)&&(n=c>d);中(m=a>b)为假,做与运算,就没有必要再执行n=c>d。

m=a>b,这样m=false,也就是0,然后整个表达式值为false,所以n没有计算,还是原来的2。

&&左边计算为0后,右边的就没必要算了

同上,布尔表达式的短路计算。