为了账号安全,请及时绑定邮箱和手机立即绑定

一道题没看懂,为什么结果是2?求解析

一道题没看懂,为什么结果是2?求解析

C C++
慕九州6240490 2016-08-22 14:03:51
#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);  return 0;}
查看完整描述

8 回答

已采纳
?
阿旭_

TA贡献217条经验 获得超353个赞

以下代码变形得(加回{}之后的样子如下)

#include<stdio.h>int main (){
  int a=2,b=-1,c=2;
  if(a<b){  
     if(b<0){
        c=0;
     }else {
        c+=1;
     }
  }
  //因为a>b(2>-1)所以没有走if里的内容,c还等于原来的值
  printf("%d\n",c);
  return 0;
}


查看完整回答
1 反对 回复 2016-08-22
?
慕侠7838451

TA贡献1条经验 获得超3个赞

因为第一个if都不成立啊,所以c没有变化

查看完整回答
3 反对 回复 2016-08-22
?
qq_励诚项目张亮_03840128

TA贡献1条经验 获得超1个赞

if  不成立,直接输出初值

查看完整回答
1 反对 回复 2016-08-23
?
磊哥哥

TA贡献1条经验 获得超0个赞

你第一个if判断了。a<b  判断完没有给任何返回值,跟没判断一样。

查看完整回答
反对 回复 2016-08-24
?
慕课朵颐3509194

TA贡献3条经验 获得超0个赞

else和它上面最近的没有被配对的if进行配对。因而这个else是和第二个if配对的。第一个if没有else,既然第一个if条件就不成立,则会跳到if下的语句执行。

查看完整回答
反对 回复 2016-08-23
?
Lancelot2

TA贡献1条经验 获得超2个赞

代码开始先判断if(a<b) 

因为不正确所以只跳到printf("%d\n",c); 

而c初始值为2

查看完整回答
2 反对 回复 2016-08-22
  • 8 回答
  • 2 关注
  • 2048 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信