决战斯大林格勒音乐:一道程序题,求输出结果,并告诉我为什么,多谢!

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 00:41:29
main()
{int a=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf("\na=%d,b=%d,c=%d",a,b,c);
}

先计算++a,这样a=1
由于||左右有一个是1整个结果就是1,所以不再执行b++
(就是左边符合条件就不用看右边的了)
直接执行c++
所以1,0,1

在常用的编译环境下,||的左边一旦算出来是真,则右边就不再计算了。所以结果是101。万一楼主碰到111,那我只有建议楼主换个编译器了。

简单的C
1:a赋值0 b赋值0 c赋值0
2:判断如果a自加1大于0或b自加1大于0那么c自加1.
3:输出a,b,c的值

结果:1,1,1
4楼的,你算错了.a,b只要有一个自加大于0就满足条件.并不等于一个满足另一个就不执行了.b也在自加并判断

先计算++a,这样a=1,然后计算++b,这样b=1,然后计算a>0,这样或逻辑运算符左边是true,所以整个表达式是true,所以c=1

最后a=1,b=1,c=1

结果为1,0,1,理由同上。另外不同编译器可能计算方式不同从而结果不同。

应该是101,我试了,和2楼说的一样