A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shenxian88 中级黑马   /  2015-4-30 15:10  /  684 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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求详细分析
复制代码

2 个回复

倒序浏览
本帖最后由 流风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





回复 使用道具 举报
谢谢,大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马