1. 算术运算符:加、减、乘、除、取余、自增、自减
  2. 关系运算符:等于、不等于、大于、小于、大于等于、小于等于
  3. 逻辑运算符:与、或、非
  4. 位运算符:按位与、按位或、按位异或、取反、左移、右移
  5. 赋值运算符:等于、加等、减等、乘等、除等、取余等、左移等、右移等、按位与等、按位或等、按位异或等
  6. 条件运算符(三目运算符):expression1 ? expression2 : expression3
  7. 逗号运算符:连接两个或多个表达式,并按顺序计算每个表达式,最终返回最后一个表达式的值。

一、算术运算符

C语言中常用的算术运算符包括:

  1. "+" 加号,用于加法运算,如 a + b 表示将 a 和 b 相加。
  2. "-" 减号,用于减法运算,如 a - b 表示将 a 减去 b 的值。
  3. "*" 乘号,用于乘法运算,如 a * b 表示将 a 和 b 相乘。
  4. "/" 除号,用于除法运算,如 a / b 表示将 a 除以 b 的值。
  5. "%" 取余号,用于取余数运算,如 a % b 表示将 a 对 b 取余数。

 "++"和"--"是C语言中的自增运算符和自减运算符,它们的作用是让变量自加1或自减1。

自增运算符"++"的使用方法有两种:

1.前缀自增运算符:++a,表示先将变量a自增1,然后再使用变量a。

2.后缀自增运算符:a++,表示先使用变量a,然后再将变量a自增1。

自减运算符"--"同样有前缀和后缀两种使用方法。

例如:

int a = 10;
int b = ++a; //先将a自增1,再将a的值赋给b,此时a=11,b=11
int c = a--; //先将a的值赋给c,再将a自减1,此时a=10,c=11

需要注意的是,在表达式中使用++或--时,它们的执行顺序是从右到左,即先执行++或--操作,再进行其他运算。例如:

int a = 10;
int b = 5 + a++; //先将a的值(10)加到5上,得到15,然后将a自增1,此时a=11,b=15
int c = 5 + ++a; //先将a自增1,得到12,然后将a的值(12)加到5上,得到17,此时a=12,c=17

二、关系运算符

C语言中的关系运算符用于比较两个变量或表达式之间的大小关系,运算结果为真或假。

常见的关系运算符有以下几种:

  1. ">" 大于运算符,用于判断左边的变量或表达式是否大于右边的变量或表达式,例如a > b。

  2. "<" 小于运算符,用于判断左边的变量或表达式是否小于右边的变量或表达式,例如a < b。

  3. ">=" 大于等于运算符,用于判断左边的变量或表达式是否大于或等于右边的变量或表达式,例如a >= b。

  4. "<=" 小于等于运算符,用于判断左边的变量或表达式是否小于或等于右边的变量或表达式,例如a <= b。

  5. "==" 等于运算符,用于判断左边的变量或表达式是否等于右边的变量或表达式,例如a == b。

  6. "!=" 不等于运算符,用于判断左边的变量或表达式是否不等于右边的变量或表达式,例如a != b。

关系运算符返回的结果是一个布尔值,即真(1)或假(0)。例如:

int a = 5, b = 10;
if (a > b) {
    printf("a > b");
} else {
    printf("a <= b");
}

这段代码中,因为a小于等于b,所以输出结果为"a <= b"。

三、逻辑运算符

C语言中的逻辑运算符用于连接两个或多个表达式,并根据表达式的值计算一个逻辑值true或false。常见的逻辑运算符有以下三种:

  1. 逻辑与运算符"&&",它表示两个表达式都为真(非0)时,整个表达式才为真。

  2. 逻辑或运算符"||",它表示两个表达式中只要有一个为真(非0),整个表达式就为真。

  3. 逻辑非运算符"!",它表示对一个表达式进行取反操作,如果该表达式为真,则返回假(0),反之亦然。

例如:

int a = 5, b = 10;
if (a > 0 && b < 20) {
    printf("a和b都满足条件");
} else {
    printf("a和b至少有一个不满足条件");
}

输出结果为"a和b都满足条件",因为a大于0,b小于20,两个条件都满足。如果将"a > 0"改为"a < 0",则输出结果为"a和b至少有一个不满足条件",因为a不满足条件。

四、位运算符

C语言中的位运算符用于对二进制位进行操作,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)

  1. 按位与(&):两个二进制数对应位都为1时,结果为1,否则为0。

例如: 7 & 3 = 3

7 的二进制为 0111,3 的二进制为 0011,按位与的结果为 0011,其十进制为3。

  1. 按位或(|):两个二进制数对应位有一位为1时,结果为1,否则为0。

例如: 7 | 3 = 7

7 的二进制为 0111,3 的二进制为 0011,按位或的结果为 0111,其十进制为7。

  1. 按位异或(^):两个二进制数对应位不相同时,结果为1,否则为0。

例如: 7 ^ 3 = 4

7 的二进制为 0111,3 的二进制为 0011,按位异或的结果为 0100,其十进制为4。

  1. 按位取反(~):对一个二进制数进行按位取反。

例如: ~7 = -8

7 的二进制为 0111,按位取反后得到 1000,其十进制为-8。

  1. 左移位(<<):将一个二进制数的所有位向左移动指定的位数。

例如: 7 << 2 = 28

7 的二进制为 0111,左移2位后得到 11100,其十进制为28。

  1. 右移位(>>):将一个二进制数的所有位向右移动指定的位数。

例如: 7 >> 2 = 1

7 的二进制为 0111,右移2位后得到 0001,其十进制为1。

五、赋值运算符

C语言中的赋值运算符用来给变量赋值,包括基本的赋值运算符(=)以及复合赋值运算符(+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=)。

  1. 基本的赋值运算符(=):将右边的值赋给左边的变量。

例如: a = 10;

这条语句将10赋给变量a。

  1. 复合赋值运算符(+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=):先进行运算,再将结果赋给左边的变量。

例如: a += 10;

这条语句等价于 a = a + 10; 即先将a加上10再将结果赋给a。

其余的复合赋值运算符同理,分别是减等于(-=)、乘等于(*=)、除等于(/=)、取模等于(%=)、左移等于(<<=)、右移等于(>>=)、按位与等于(&=)、按位异或等于(^=)、按位或等于(|=)。

六、条件运算符

C语言中的条件运算符是 ? :,也称为三目运算符,它是C语言中唯一的一个三元运算符。

条件运算符 ? : 的语法格式为:

表达式1 ? 表达式2 : 表达式3

表达式1为条件表达式,结果为真或假,如果为真,则返回表达式2的值,否则返回表达式3的值。

示例:

int a = 10;
int b = 5;
int max = (a > b) ? a : b;

上述示例中,条件表达式 a > b 返回的值为真,因此 max 的值为 a 的值,即 10。

条件运算符通常用在赋值语句中,可以根据条件进行不同的赋值操作,这样可以简化代码并提高程序的可读性。

注意:在条件运算符中,表达式2和表达式3必须是同种数据类型,否则编译器将会自动进行类型转换。

七、逗号运算符

C语言中的逗号运算符(,)用于在表达式中连接多个表达式,并按照顺序依次执行这些表达式,返回最后一个表达式的值。

逗号运算符的语法格式为:

表达式1, 表达式2, 表达式3, ..., 表达式n

逗号运算符会按照顺序执行这些表达式,并返回最后一个表达式的值。

示例:

int a = 1, b = 2, c = 3, sum = 0;
sum = (a++, b++, c++, a + b + c);

上述示例中,逗号运算符连接了4个表达式,分别是 a++, b++, c++, a+b+c。逗号运算符会依次执行这些表达式,首先执行 a++, 然后是 b++, 最后是 c++。最终的返回值是 a + b + c 的值,即 6。在执行完逗号运算符后,a、b、c的值分别为 2、3、4,sum的值为 6。

 八、运算符优先级

在C语言中,不同的运算符优先级不同,如果一个表达式中有多种运算符,那么按照运算符优先级的顺序进行计算。下面是C语言运算符优先级的表格(从高到低):

运算符描述
()、[]、->、.从左到右
++、--前缀自增、前缀自减
+、-、!、~、++、--、(类型)、*正负号、逻辑非、按位取反、强制类型转换、前缀自增、前缀自减、解引用
*、/、%乘、除、取模
+、-加、减
<<、>>按位左移、按位右移
<、<=、>、>=关系运算符
==、!=相等、不等
&按位与
^按位异或
|按位或
&&逻辑与
||逻辑或
? :条件运算符
=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=赋值运算符

在表达式中优先级最高的是括号运算符 (),其次是数组下标运算符 [],结构体成员运算符 -> 和 .。如果表达式中有多个运算符,先计算优先级高的运算符,然后再计算优先级低的运算符。如果有多个运算符的优先级相同,则按照从左到右的顺序进行计算。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐