- #include <stdio.h>
- int main(){
- int x,y,z,result;
- x=y=z=0;
- result=( (++x) || (++y) && (z++) );// 1 || (......) 一真为真,或运算右侧表达式不执行
- printf("result=%d,x=%d,y=%d,z=%d",x,y,z,result);
- }//结果 result=1,x=1,y=0,z=0
复制代码
按照优先级的话,++x、++y、z++是第2级,应该优先执行,然而由于++x先执行等于1,1或任何表达式都为1,所以结果是1.这一点没有问题。
问题在于,不是先优先级执行吗?++x执行完就应该执行++y、z++,可是实际不是这样的。所以这里有点疑惑?虽然知道初学者应该不求甚解,但还是有点介怀啊,有点好奇计算机的运行机制。。。 |
|