本帖最后由 qq358556392 于 2015-7-3 13:11 编辑
还在看基础视频,一个逻辑运算短路的问题一直有点疑惑,
视频里讲的如下
#include<stdio.h>
int main ( ){
int x,y,z;
x=y=z=0;
result=++x || y++ && ++z;
printf("result = %d\n",result); //这里输出result = 1
printf("x = %d,y = %d, z = %d\n",x,y,z); //这里输出x = 1,y = 0,z = 0
return 0;
}
自增运算优先级为2,先算自增没问题,
但是 && 的优先级为11,而 | | 的优先级为12,先运算的是 y++ && ++z,就不存在&&短路的情况,而是||被短路。
最后输出的应该x = 0,y = 1,z = 1
然而最终输出的是x = 1,y = 0,z = 0,是&&被短路后的结果。
疑惑就是:短路不符合优先级的规则啊?
|
|