if else我们可以理解为
if(条件1) //如果条件1成立
语句1; //执行语句1
else //如果条件1不成立
语句2; //执行语句2
这是一个经典的if else双分支语句,那么除了双分支外,if else还有多分支语句,本文重点讲解双分支和多分支的概念
双分支
#include <stdio.h>
int main() {int age=10;if(age>=18)printf("成年\n");else printf("未成年\n");return 0;
}
先看代码,由于age<18,所以if里面的条件不成立,就执行语句2。
那么如果我们要给这个程序加上一个未成年不能喝酒的条件呢?
#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");elseprintf("未成年\n");printf("不能喝酒");return 0;
}
这样写是错误的,当我们没有分组else下面的语句时,else默认只包含下面的第一条语句,所以现在虽然age=20,但打印的结果是这样的
那么我们的解决方法是:
1、在else下面的语句加上大括号
#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");else {printf("未成年\n");printf("不能喝酒");}return 0;
}
2、else下面的语句结束时用逗号而非分号
#include <stdio.h>
int main() {int age=20;if(age>=18)printf("成年\n");elseprintf("未成年\n"), //注意这一行最后的分号被改为逗号了printf("不能喝酒");return 0;
}
这样就能有效的解决我们在if else当中遇到多条要执行的语句并可以让它们在else当中一一对应的情况了。
多分支
if(条件1) //如果条件1成立
语句1; //执行语句1
else if(条件2) //如果条件1不成立,执行条件2
语句2; //执行语句2
else //如果条件1和条件2都不成立
语句3; //执行语句3
#include <stdio.h>
int main() {int age=20;if(age<18)printf("少年\n");else if(age>=18 && age<=30)printf("青年\n");else if(age>30 && age<=50)printf("中年\n");elseprintf("老年\n");return 0;
}
需要注意的时,当我们在写" if(age>=18 && age<=30) "的时候不能写成" 18<=age<=30 ",在c语言中如果写成这样,那么程序运行的时候就会误判
age=60 | |
18<=age(60) | 为真,输出1 |
age(1)<=30 | 为真,输出1 |
所以虽然age=60,但程序依然认为我们是" 青年 "