黑马程序员技术交流社区
标题:
关于逻辑运算符短路的疑惑点
[打印本页]
作者:
4B青年
时间:
2015-7-2 20:57
标题:
关于逻辑运算符短路的疑惑点
#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++,可是实际不是这样的。所以这里有点疑惑?虽然知道初学者应该不求甚解,但还是有点介怀啊,有点好奇计算机的运行机制。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2