目录
分支语句(1)
一、if else
C语言用0表示假,非0表示真。
1.
if (表达式)
语句;
2.
if(表达式)
语句1;
else
语句2;
多分支语句
1.
if(表达式);
语句1;
else
语句2;
else
语句3;
注意事项(1)
if和else只能控制其后第一条语句。
例如
int main()
{
int age = 20;
if (age >= 18)
printf(“成年\n”);
else
printf(“未成年\n”);
printf(“要好好学习\n”);
return 0;
}
该段代码中else只能控制printf(“未成年\n”)语句,不能控制printf(“要好好学习\n”)。所以输出打印的结果是成年和要好好学习。
另:如果想让else控制其后更多语句,可以加上大括号。一个大括号就是一个代码块,表示一种逻辑。
例如
int main()
{
int age = 20;
if (age >= 18)
printf(“成年\n”);
else
{ printf(“未成年\n”);
printf(“要好好学习\n”);
}
return 0;
}
2.
if (表达式)
语句1;
else if(表达式)
语句2;
else if(表达式)
语句3;
注意事项(2)
注意逻辑顺序:
例,输入int age = 60
if(18 <= age < 26)
printf(“青年\n”);
这里输入的是60,但if后面想限制的表达式是18-26之间。按道理说是无法打印的,但在实际运行中是可以打印出青年的。那么原因是什么呢?
首先,这种写法是错误的。代码运行时的顺序是,先,18<=age,因为输入的值为60,符合,是真,即为1。此时18<=age部分为1,继续进行<26部分,1<26,为真,符合,打印出青年。
其次,正确的写法,可以写作age>18 && age<60 。
注意事项(3)
else与离他最近的if匹配
else与离他最近的if语句匹配。而不是与对齐的匹配。
例如
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf(“haha\n”);
else
printf(“hehe\n”);
运行结果是,不打印。
因为else printf(“hehe\n”);语句是与if (b == 2)组合的,而不是if ( a== 1)。在这段代码中,if ( a== 1)是进行下面if else分支语句的先决条件,满足了if (a == 1)才会进行下方if else语句。
但输入的a=0 ,不满足if (a == 1),也就更不会进行下方语句。所以不会打印出文字。