黑马程序员技术交流社区

标题: 求下面代码的详细分析步骤 [打印本页]

作者: shenxian88    时间: 2015-4-30 15:10
标题: 求下面代码的详细分析步骤
本帖最后由 shenxian88 于 2015-4-30 20:18 编辑
  1. int x,y,z;
  2.         x=y=z=1;
  3.         (x || ++y) && ++z;
  4.         printf("%d,%d,%d",x,y,z);
  5. //这个运行的结果怎么是1、1、2求详细分析
复制代码

作者: 流风124    时间: 2015-4-30 15:32
本帖最后由 流风124 于 2015-4-30 15:37 编辑

(1)x=y=z=1,自右向左连续赋值,x y z 都是1
(2)
(x || ++y) && ++z;

(x||++y): x的值是1,或运算的结果是1,由于 || 是短路运算符,就是前面的值为1,后面不再执行,所以,++y这句不执行,到这里,x=1,y=1
(x||++y)的运算结果是1,执行 && 后面的代码,++z, z的值+1,所以 z=2






作者: shenxian88    时间: 2015-4-30 20:19
谢谢,大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2