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

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

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

目录
相关文章
|
7天前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
8天前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
8 1
|
11天前
|
存储 编译器 C语言
C语言---操作符详解(1)
C语言---操作符详解
12 1
|
18天前
|
存储 C语言 索引
【C语言基础】:操作符详解(二)
【C语言基础】:操作符详解(二)
|
26天前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
26 3
|
27天前
|
存储 C语言
C语言:详解操作符(下)
C语言:详解操作符(下)
21 3
|
26天前
|
C语言
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
C语言学习记录——操作符习题、算数转换习题,多解法&优解法&单选题
14 1
|
26天前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
20 1
|
8天前
|
算法 C语言
【C语言】:巧用移位操作符,位操作符解决问题
【C语言】:巧用移位操作符,位操作符解决问题
7 0
|
8天前
|
编译器 C语言
【C语言】:sizeof操作符的使用和各种常见数据类型的大小
【C语言】:sizeof操作符的使用和各种常见数据类型的大小
10 0