黑马程序员技术交流社区

标题: 关于逻辑运算符短路的疑惑点 [打印本页]

作者: 4B青年    时间: 2015-7-2 20:57
标题: 关于逻辑运算符短路的疑惑点
  1. #include <stdio.h>
  2. int main(){
  3.      int x,y,z,result;
  4.      x=y=z=0;
  5.      result=( (++x) || (++y) && (z++) );// 1 || (......) 一真为真,或运算右侧表达式不执行
  6.      printf("result=%d,x=%d,y=%d,z=%d",x,y,z,result);
  7. }//结果 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