黑马程序员技术交流社区

标题: 求大牛帮忙。 [打印本页]

作者: 强颜欢笑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