一、多重选择else if
功能:在两个以上的语句中作出选择
示例代码:
#include <stdio.h>
int main(void)
{
float score;
printf("Please enter your score: \n");
scanf("%f", &score);
if(score < 60)
printf("不及格,需要加油了!\n");
else if(score < 70)
printf("及格,好险!\n");
else if(score < 80)
printf("中等\n");
else if(score < 90)
printf("良好,距离优秀只差一步了!\n");
else
printf("优秀!\n");
}
运行结果:
else和if的配对
原则:如果没有花括号指明,else与其最近的一个if匹配
示例代码:
#include <stdio.h>
int main(void)
{
int num = 20;
if(num > 10)
if(num < 15)
printf("A \n");
else // 缩进格式对编译器无效
printf("B \n");
}
运行结果:
if多层嵌套
else和if配对的示例中使用到了多层if的嵌套
二、逻辑运算符
使用逻辑运算符可以替代相当一部分多层嵌套if
优先级:赋值运算符 < || < && < 关系运算符 < 算术运算符
! 运算符的优先级很高,高于乘法,和增量运算符优先级相同,仅次于圆括号
如果记不住优先级,建议多使用圆括号
运算符 | 含义 |
&& | 与 |
|| | 或 |
! | 非 |
iso646.h文件
如果包含该头文件,可以用 and 代替 && ,用 or 代替 || ,用 not 代替 !
C保证逻辑表达式是从左到右求值的,&&和||运算符是序列的分界点
示例代码:
#include <stdio.h>
int main(void)
{
int num = 0;
if(num++ == 0 && num == 1) // 先执行num++,再执行num == 1的判断
{
printf("the value of num is %d \n", num);
}
return 0;
}
运行结果:
C保证一旦发现某个元素使表达式总体无效,求值将立刻停止
示例代码:
#include <stdio.h>
int main(void)
{
int num = 0;
if(num != 0 && num++ < 10) // num++不会执行
{
;
}
printf("the value of num is %d \n", num);
return 0;
}
运行结果:
三、条件运算符 ? :
条件运算符:C提供的一种表示if-else语句的简写方式
条件运算符是一个三元运算符,有3个操作数,是C中唯一一个三元运算符
示例:
int a;
int abs_a;
abs_a = (a < 0) ? -a : a; // 如果a小于0,则abs_a = -a
// 如果a大于等于0,则abs_a = a;
条件表达式的一般形式:
expression1 ? expression2 : expression3
如果expression1为真,整个表达式的值和expression2的值相同;如果expression1为假,整个表达式的值和expression3的值相同
if-else语句能完成与条件运算符同样的功能,但是条件运算符语句更简洁