再学C语言24:分支和跳转——逻辑运算符和条件运算符

文章介绍了C语言中的选择结构,包括多重elseif,else与if的配对原则,以及if的多层嵌套。同时讲解了逻辑运算符的使用,如&&、||和!,并提到了ISO646.h头文件中的替代符号。最后,文章讨论了条件运算符?:,作为if-else语句的简写形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、多重选择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");
}

运行结果:

ada2611924b140eea45ef846d3e5fc87.png

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");
}

运行结果:

5ea91227935946f19a0d2324dfe92716.png

if多层嵌套

else和if配对的示例中使用到了多层if的嵌套

二、逻辑运算符

使用逻辑运算符可以替代相当一部分多层嵌套if

优先级:赋值运算符 < || < && < 关系运算符 < 算术运算符

! 运算符的优先级很高,高于乘法,和增量运算符优先级相同,仅次于圆括号

如果记不住优先级,建议多使用圆括号

C的逻辑运算符
运算符含义
&&
||
!

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;
}

运行结果:

a4c750650a234ec79be19a8187485b8b.png

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;
}

运行结果:

594294b8494647cfbd8c4185a32d9632.png

三、条件运算符 ? :

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forster-C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值