黑马程序员技术交流社区
标题:
求大牛帮忙。
[打印本页]
作者:
强颜欢笑i
时间:
2015-4-9 20:25
标题:
求大牛帮忙。
#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 是怎么得到的呢?
作者:
IOS小哥
时间:
2015-4-9 20:39
同样想知道是怎么得到的。
作者:
qudanjiang
时间:
2015-4-9 21:30
短路了 ,a++ a 还当前是0 &&b++ 不会运行了,
作者:
中哥太强大了
时间:
2015-4-9 21:34
同问,求解答
作者:
bansy_chen
时间:
2015-4-9 21:59
a=0,,0在前,&& 逻辑与=0,就不用执行b++了,a 自增1,然后
|| c=0, 逻辑或 =0,c自增1 ;
所以结果1 0 1
作者:
夜空守望者
时间:
2015-4-9 22:15
楼上正解!
作者:
康仔
时间:
2015-4-10 01:29
先取值再自增
作者:
流风124
时间:
2015-4-10 07:15
执行过程大概如下:
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
上面是我分析的,希望对你的理解有帮助
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2