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

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

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

目录
相关文章
|
3月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
74 0
|
3月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
257 0
|
27天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
34 10
|
1月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
160 1
|
1月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
173 0
|
3月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
45 6
|
3月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
59 0
十一:《初学C语言》—  操作符详解(上)
|
5月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
5月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
44 1
|
5月前
|
存储 编译器 C语言