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)判断后为什么下面的代码不执行了他也没有使用{}啊 if(!x) 和 if(x == 0) 同意思,就好象说
(如果今天不下雨) 和 (如果今天是晴天) 同意思。
int main(){ // <-----这里你忘记写 int
}
在多个 if... else... 语句中,最好用 {} 作用域,不然你自己也乱,编译器也乱 傻眼貓咪 发表于 2022-3-21 17:28
if(!x) 和 if(x == 0) 同意思,就好象说
(如果今天不下雨) 和 (如果今天是晴天) 同意思。
谢谢你这个是考题里的 我能理解 (x==0)的判断 我想问的是既然已经是不成立了 为什么不是把下面的 if(x)y+=2;看作一条语句而是把if...else 整个看作一条 1ytks 发表于 2022-3-21 17:43
谢谢你这个是考题里的 我能理解 (x==0)的判断 我想问的是既然已经是不成立了 为什么不是把下面的 ...
在没有{}的情况下if后不是只有一条语句吗? 1ytks 发表于 2022-3-21 17:44
在没有{}的情况下if后不是只有一条语句吗?
else if(x == 0) // <--------这里判断 x = 0 成立
if(x) y += 2; // 这里是在上面的 else if 作用域里,但是 x = 0 成立,所以永远达不到这里。 {:10_339:}{:10_341:} {:10_318:} 本帖最后由 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");
} if-else是就近匹配的 andy大宝 发表于 2022-3-24 14:29
研究了一下,明白您的意思了,解答下。
else if后面是一定要跟一段语句的,作为条件成立时执行的代码,基 ...
谢谢你很是明确了elseif中的 if和else为一对但是 总的前提是 不成立所以他们俩都没能执行我已经搞明白了 很久没上论坛了抱歉才看到 1ytks 发表于 2022-3-31 09:53
谢谢你很是明确了elseif中的 if和else为一对但是 总的前提是 不成立所以他们俩都没能 ...
好的{:10_323:}
页:
[1]