猿问

一道题没看懂,为什么结果是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);

  return 0;

}


慕九州6240490
浏览 2049回答 8
8回答

阿旭_

以下代码变形得(加回{}之后的样子如下)#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; }

慕侠7838451

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

qq_励诚项目张亮_03840128

if  不成立,直接输出初值

磊哥哥

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

慕课朵颐3509194

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

Lancelot2

代码开始先判断if(a<b) 因为不正确所以只跳到printf("%d\n",c); 而c初始值为2
随时随地看视频慕课网APP
我要回答