Skip to content

2.3.4 常见运算符

2.3.4 常见运算符

运算,就是对多个数据进行处理 运算符表示了数据之间的运算关系 当然,像大于小于这些逻辑判断,我们也归类为运算符


1.算术运算符

常用的算术运算符在包括加减乘除(+ - * /)的同时 还包括了%(取模),也就是求余数的运算 比如23%5的结果就是3 因为

\[23 \div 5 = 4 \cdots 3\]

%和/经常用于对正整数左某位或右某位数的操作 比如,int a = 123456; 取右一位,a = a % 10; 取左一位 , a = a /100000; 丢弃右一位,a = (int)(a/10); 丢弃左一位,a = a % 100000;

TODO: 解释一下为什么形如 x = x + 1 的代码是能写的,以及它表示什么

除此之外,还有一种运算符,就是自加/自减运算,分别用++和--表示 表示在当前基础上加上或减去1 比如 int i = 1; i++; //现在i等于2

值得注意的是,自加/自减的位置不同,结果也不同 我们以自加为例子

  • i++ 最终的效果是让 i 的值增加 1 ,但是 i++ 这个表达式本身所产生的值是在 i 自增之前原有的值;
  • ++i 最终的效果是让 i 的值增加 1 ,但是 ++i 这个表达式本身所产生的值是在 i 自增之后变成的新值。

写两个程序演示一下:

#include <stdio.h>

int main(void)
{
    int i = 5;
    int j = i++;
    printf("i = %d, j = %d\n", i, j);
    return 0;
}

输出结果是: i = 6, j = 5

而如果改成前缀 ++ 的话:

#include <stdio.h>

int main(void)
{
    int i = 5;
    int j = ++i;
    printf("i = %d, j = %d\n", i, j);
    return 0;
}

输出结果就会是: i = 6, j = 6


2.关系运算符

首先是最常见的> <,小于和大于 但是值得注意的是,C语言中的等于是==,而不是一个=,一个=是赋值

而!=是不等于

而大于等于和大于小于则这样表示:>=大于等于 <=小于等于


3.逻辑运算符

逻辑运算符用来表示最基本的逻辑运算 && 与 || 或 ! 非

其中,A && B只有在A和B都是对的时候,A && B才是对的 而A || B只要A和B有一个对,那么A || B就是对的 对于!A,只要A是对的,!A就是错的

在这里,我们用 int 类型的值 1 来表示“对”(True), 0 表示“错”(False)。

TODO: 其他值

也就是说:

表达式 结果
1 && 1 1
1 && 0 0
0 && 1 0
0 && 0 0
1 \|\| 1 1
1 \|\| 0 1
0 \|\| 1 1
0 \|\| 0 0
!1 0
!0 1

TODO: C99/C23/C++ 布尔类型

需要注意的是,如果我们想表示一个区间,比如1<=a<=5,或者说a∈[1,5] 那么,我们应当这样写: 1 <= a && a <= 5 而不能直接写1<=a<=5

TODO: 说明原因


4.赋值运算符

最基本的就是一个= 比如

int a;
a = 10;  //将a赋值为10

除此之外,还有一些整合计算的赋值运算符+= -= *= /= 我们就拿+=举个例子 比如,我像让i等于i+5 那么就可以这样写

int i;
i += 5;

这和写 i = i + 5 是一样的。

至于其他的,都同理