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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 强颜欢笑i 中级黑马   /  2015-4-9 20:25  /  1000 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
main()
{
int a,b,c;
a=0,b=0,c=0;
a++ && b++ || c++;
printf("%d,%d,%d",a,b,c);
}


运行结果是1,0,1 是怎么得到的呢?

7 个回复

倒序浏览
同样想知道是怎么得到的。
回复 使用道具 举报
短路了 ,a++ a 还当前是0 &&b++ 不会运行了,
回复 使用道具 举报 1 0
同问,求解答
回复 使用道具 举报
a=0,,0在前,&& 逻辑与=0,就不用执行b++了,a 自增1,然后
|| c=0, 逻辑或 =0,c自增1 ;
所以结果1 0 1
回复 使用道具 举报
楼上正解!
回复 使用道具 举报
康仔 中级黑马 2015-4-10 01:29:42
7#
先取值再自增
回复 使用道具 举报
执行过程大概如下:
1. a++  a = 1
2.(a && b++)  (自加时先取值再 + 1)   -->  (0 && b++)  &&是短路运算,前面为0,则结果为0,后面的 b++ 不再计算,所以 b = 0
3. 第2步中(a && b++)的结果为 0 ,所以 计算式变为( 0 || c ++) ---> (0 || 0),所以计算式的结果是 0 ,但是 c++,所以c = 1
上面是我分析的,希望对你的理解有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马