一、多重选择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语句能完成与条件运算符同样的功能,但是条件运算符语句更简洁



















