include<stdio.h> main() {int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; e else c+=1; printf("%d/n",c)}

为什么结果是1?为什么不是2?请详细解释一下,谢谢你!
为了让大家看清楚,我再发一遍哈
#include<stdio.h>
int main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf ( "%d\n", c );
}

非常抱歉,各位,我搞错了,答案是2。。。为什么是2呢????我表示我很二。。。。汗

我搞不懂表达式c+=1,输出的结果是2???

你写的这段代码有一些问题(语法错误),把语法问题改正后:
#include<stdio.h>
int main() //推荐主函数用int main()
{
int a=2,b=-1,c=2; //定义a、b、c并初始化
if(a<b)
if(b<0) c=0;
else c+=1;
printf("%d\n",c); //输出值为2
return 0;
}
这段代码相当于下面的代码,这样就好理解了:
#include<stdio.h>
int main() //推荐主函数用int main()
{
int a=2,b=-1,c=2; //定义a、b、c并初始化
if(a<b)
{
if(b<0) c=0;
else c+=1;
}
printf("%d\n",c);
return 0;
}
当a<b时,执行
显然a=2,b=-1 所以没执行:
if(b<0) c=0;
else c+=1;
接下来程序输出c的值,c还是2。如果那边值是1,那我肯定你是什么地方打错了,或者求助的问题和你运行的代码存在不一致!追问

亲,为什么是2啊?为什么不是三哪?c+=1这个表达式的结果不是3吗?

追答

if....else结构可不是随便拆装的,c+=1这个表达式的结果是3,但是这句实际上没有执行啊!注意看这里:
这段代码相当于下面的代码,这样就好理解了:
#include
int main() //推荐主函数用int main()
{
int a=2,b=-1,c=2; //定义a、b、c并初始化
if(a<b)
{
if(b<0) c=0; //if的嵌套啊,if(a<b)中当a<b才会执行这个if...else结构的!
else c+=1; //就算a<b值为真,但是b<0为真,这句也没有被执行啊!
}
printf("%d\n",c);
return 0;
}
当a<b时,执行
显然a=2,b=-1 所以没执行:
if(b<0) c=0;
else c+=1;
接下来程序输出c的值,c还是2。

追问

亲,你的意思我看明白了,谢谢你!是不是如果执行else c+=1,那么结果应该是3?

追答

if.....else结构不是随便拆装的,建议以后写括号,层次更加分明。你不是就被这个结构搞乱了?如果不写括号,if和else应该是就近匹配。所以这个else应该是if(b<0)的,不是if(a<b)的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-13
楼主,要么就是你给的代码弄错了,要么就是答案错了,无论走的是哪一条语句,结果都不会是1的。
如果按你写的这个代码来看的话。C应该是2
至于你说的答案是1,
如果走if(b<0) c=0这句话结果就是0
如果走else c+=1这句话,结果就是3

楼主再看看是不是代码敲错了。。。
第2个回答  2012-02-13
你确定你的程序没有抄错?按照格式再贴一遍吧 不要贴在标题上 太乱
第3个回答  2018-06-20
百度“悬空else” 问题, 一切就都懂了

第4个回答  2012-02-13
你确定你没有手误啊?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网