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

© 强颜欢笑i 中级黑马   /  2015-4-9 20:25  /  1217 人查看  /  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
同问,求解答
回复 使用道具 举报
楼上正解!
回复 使用道具 举报
先取值再自增
回复 使用道具 举报
执行过程大概如下:
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
上面是我分析的,希望对你的理解有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马