1ytks 发表于 2022-3-21 17:07:39

if else的疑问 求解答

#include<stdio.h>
main(){
        int x=1,y=0;
        if(!x) y++;
        else if(x==0)
               if(x) y+=2;
               elsey+=3;
        printf("%d",y);
}
这段代码中    y结果为0   执行(x==0)判断后为什么下面的代码不执行了他也没有使用{}啊   

傻眼貓咪 发表于 2022-3-21 17:28:48

if(!x) 和 if(x == 0) 同意思,就好象说
(如果今天不下雨) 和 (如果今天是晴天) 同意思。

int main(){ // <-----这里你忘记写 int
}

在多个 if... else... 语句中,最好用 {} 作用域,不然你自己也乱,编译器也乱

1ytks 发表于 2022-3-21 17:43:15

傻眼貓咪 发表于 2022-3-21 17:28
if(!x) 和 if(x == 0) 同意思,就好象说
(如果今天不下雨) 和 (如果今天是晴天) 同意思。



谢谢你这个是考题里的   我能理解 (x==0)的判断 我想问的是既然已经是不成立了 为什么不是把下面的 if(x)y+=2;看作一条语句而是把if...else 整个看作一条

1ytks 发表于 2022-3-21 17:44:29

1ytks 发表于 2022-3-21 17:43
谢谢你这个是考题里的   我能理解 (x==0)的判断 我想问的是既然已经是不成立了 为什么不是把下面的 ...

在没有{}的情况下if后不是只有一条语句吗?

傻眼貓咪 发表于 2022-3-21 17:54:33

1ytks 发表于 2022-3-21 17:44
在没有{}的情况下if后不是只有一条语句吗?

else if(x == 0) // <--------这里判断 x = 0 成立
   if(x) y += 2; // 这里是在上面的 else if 作用域里,但是 x = 0 成立,所以永远达不到这里。

a1372245671 发表于 2022-3-23 14:24:42

{:10_339:}{:10_341:}

a1372245671 发表于 2022-3-24 11:02:51

{:10_318:}

andy大宝 发表于 2022-3-24 14:29:48

本帖最后由 andy大宝 于 2022-3-24 14:35 编辑

研究了一下,明白您的意思了,解答下。
else if后面是一定要跟一段语句的,作为条件成立时执行的代码,基本原理如下:
#include<stdio.h>
main(){
      int x=1,y=0;
      if(!x) y++;   
      else if(x==0)//对x==0进行判断,条件为false
               if(x) y+=2;//因为上一次条件判断已经为false,且这里默认为else if的语句,所以不执行   
               elsey+=3;//这里的else匹配前面的if,所以也不执行         
      printf("%d",y);
      system("pause");
}
如果后面跟了语句,以上条件就会被判断:
#include<stdio.h>
main(){
      int x=1,y=0;
      if(!x) y++;   
      else if(x==0)
               printf("我是一条关于else if条件的语句");
               if(x) y+=2;    //这里的两行判断被单独执行
               elsey+=3;               
      printf("%d",y);
      system("pause");
}

cuixf 发表于 2022-3-24 22:25:37

if-else是就近匹配的

1ytks 发表于 2022-3-31 09:53:28

andy大宝 发表于 2022-3-24 14:29
研究了一下,明白您的意思了,解答下。
else if后面是一定要跟一段语句的,作为条件成立时执行的代码,基 ...

谢谢你很是明确了elseif中的   if和else为一对但是 总的前提是 不成立所以他们俩都没能执行我已经搞明白了 很久没上论坛了抱歉才看到

andy大宝 发表于 2022-3-31 10:38:02

1ytks 发表于 2022-3-31 09:53
谢谢你很是明确了elseif中的   if和else为一对但是 总的前提是 不成立所以他们俩都没能 ...

好的{:10_323:}
页: [1]
查看完整版本: if else的疑问 求解答