五:C语言-操作符

五:操作符

1.关系操作符:

在C语言中用于比较的表达式,称为 “关系表达式” ,里面使用的运算符就称为 “关系运算符” ,主要有下面六个:

关系运算符描述
>大于运算符
<小于运算符
>=大于等于运算符
<=小于等于运算符
==相等运算符
!=不相等运算符

注意:

  • 关系表达式通常返回10,表示真或假
  • 在C语言中,0表示假;所有非0的值表示真
  • 关系表达式常用于ifwhile结构
  • 在C语言中==表示关系运算符;=表示赋值运算符

多个关系运算符不宜连用:

#include <stdio.h>
int main()
{
    int a = 20;
    int b = 60;
    int c = 90;
    if(b < c < a)
    {
        printf("xxx\n");
    }
    else
    {
        printf("mmm\n");
    }
    return 0;
}

注意:

因为关系符是从左到右计算,所以实际执行的是(b < c) < ab < c返回01

所以最终是01与变量a进行比较

如果要判断变量c的是否在ab之间,应该使用下面的写法:

#include <stdio.h>
int main()
{
    int a = 20;
    int b = 60;
    int c = 90;
    if(b < c && c < a)
    {
        printf("xxx\n");
    }
    else
    {
        printf("mmm\n");
    }
    return 0;
}

注意: 由于不满足c < a这个条件,所以打印mmm

2.逻辑操作符:

逻辑运算符提供逻辑运算功能,用于构建更复杂的表达式,主要有下面三个运算符:

逻辑运算符描述
&&与运算符,表示并且:两侧表达式都为真,则为真,否则为假
`
!逻辑取反运算符(改变单个表达式的真假)

示例1 – 逻辑取反运算符:

#include <stdio.h>
int main()
{
    int t = 0; // 表达式为假
    if(!t) // 表达式被取反运算符变为真
    {
        printf("真\n"); // 此时因表达式为真所以打印输出
    }
    return 0;
}

示例2 – 与运算符:

#include <stdio.h>
int main()
{
    int a = 1;
    printf("请输入你的年龄:");
    scanf("%d", &a);
    if (a >= 1 && a <= 18) // 如果两个条件同时满足则执行真,否则执行假
        printf("真\n");
    else
        printf("假\n");
    return 0;
}

示例3 – 或运算符:

#include <stdio.h>
int main()
{
    int a = 0;
    printf("请输入月份:");
    scanf("%d",&a);
    if(a == 1 || a == 2 || a == 12)
        printf("是冬季\n");
    else
        printf("不是冬季\n;");
    return 0;
}

3.闰年的判断:

输入一个年份year,判断year是否为闰年:

闰年的判断:

  1. 能够被4整除并且不能够被100整除的是闰年
  2. 能够被400整除的是闰年

示例1 – 第一种写法:

#include <stdio.h>
int main()
{
    int year = 0;
    printf("请输入年份:");
    scanf("%d",&year);
    if(year % 4 == 0 && year % 100 != 0)
        printf("是闰年\n");
    else
    {
        if(year % 400 == 0)
            printf("是闰年\n");
    }
    return 0;
}

示例2 – 第二种写法:

#include <stdio.h>
int main()
{
    int year = 0;
    printf("请输入年份:");
    scanf("%d",&year);
    if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        printf("是闰年\n");
    else
        printf("不是闰年\n");
    return 0;
}

4.短路问题:

C语言逻辑运算符有一个显著的特点,它总是先对左侧的表达式求值;再对右边的表达式求值,这个顺序是固定的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式进行求值,这种情况便被称为短路

  • 对于&&操作符来说,当左边表达式的结果为假的时候,右边的表达式便不再执行
  • 对于||操作符来说,当左边表达式的结果为真的时候,右边的表达式便不再执行

像这种仅根据左边表达式的结果就知道整个表达式的结果,便不再对右边的表达式进行运算的称为短路求值

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

温轻舟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值