C语言
#include<stdio.h>void main()
{
int a=0,b=1,c=0,d=20;
if(a!=0) d=d-10;
else if(b==0)
if(!c) d=15;
else d=25;
printf("d=%d\n",d);
}
我想问一下为什么结果是20,第一个else后面的程序没有执行,是为什么 你应该是掉进了 “悬挂 else” 的坑里。a 等于 0,b 不等于 0,所以不执行。
#include <stdio.h>
void main()
{
int a = 0, b = 1, c = 0, d = 20;
if (a != 0)
d = d - 10;
else if (b == 0)
{
if (!c)
d = 15;
}
else
d = 25;
printf("d=%d\n", d);
} 1,是else if。
2,C语言的if是就近匹配的,也就是说,就近匹配后的代码应该是这样子的:
#include<stdio.h>
void main()
{
int a=0,b=1,c=0,d=20;
if(a!=0) d=d-10;
else if(b==0)
if(!c) d=15;
else d=25;
printf("d=%d\n",d);
}
可以发现,b如果不等于0,整个else if里面的东西都不会执行。
所以,d没有变化,就还是20. qiuyouzhi 发表于 2020-5-3 21:48
1,是else if。
2,C语言的if是就近匹配的,也就是说,就近匹配后的代码应该是这样子的:
那我要是在第一个if后面加上一个printf(”%d”,a);
后面的elseif是不是就可以正常运行了
woainilp 发表于 2020-5-3 22:21
那我要是在第一个if后面加上一个printf(”%d”,a);
后面的elseif是不是就可以正常运行了
我想并不是,你得加上大括号,表示范围。
页:
[1]