C 语言运算符

2025 年 6 月 6 日 | 15 分钟阅读

在 C 编程语言中,运算符是特殊符号,主要用于对变量和操作数的值执行操作。运算符是任何编程语言的基本概念。可以有多种操作,包括算术、赋值、位运算、逻辑和关系计算。运算符使我们能够有效地处理和操作数据。C 语言有大量的内置运算符,可以根据其用途分为不同的类别。

运算符类型

C 语言中有几种类型的运算符。这些运算符如下:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算符
  • 赋值运算符
  • 杂项运算符
  • 移位运算符

现在,我们将逐一讨论 C 语言中的这些运算符。

算术运算符

C 编程语言中,算术运算符对操作数执行基本的数学运算,例如加法 (+)、减法 (-)、乘法 (*)、除法 (/) 和模数 (%)。C 语言中的几种算术运算符如下:

运算符名称符号描述
加法+加法运算符用于将两个操作数相加
减法-减法运算符用于从第一个操作数中减去第二个操作数。
乘法*此运算符用于将两个操作数相乘
除法/第一个操作数和第二个操作数使用除法运算符进行除法
取模%模数运算符确定两个操作数之间除法的余数。
递增++它将值递增 1,例如 x++ 或 ++x。
递减--它将值递减 1,例如 x-- 或 --x

模数运算符 (%) 只能应用于整数值,因为它返回整数除法的余数。它不适用于浮点数。
增量 (++) 和减量 (--) 运算符有两种形式:前缀和后缀。两者都将值增加或减少 1,但它们的执行方式不同。

  • ++a: 前缀增量;值在使用表达式之前增加。
  • a++: 后缀增量;首先使用原始值,然后增加。

相同的逻辑适用于减量运算符。

  • --a: 它在使用值之前减少值。
  • a--: 它取当前值,然后减少它。

C 算术运算符示例

让我们举一个例子来说明 C 语言中的算术运算符。

示例

编译并运行

输出

The addition of given numbers x + y is = 30
The subtraction of given numbers x - y is = -10
The multiplication of given numbers x * y is = 200
The division of given numbers y / x is = 2
The modulus of given numbers y % x is = 0
The given number is x++ = 10
After increment, the value of x is = 11
Now, the value of x-- is = 11
After decrement, the value of x is = 10

说明

在此示例中,我们演示了如何使用算术运算符,例如加法、减法、乘法、除法、模数、增量和减量,对两个数字 x 和 y 进行操作。它逐步显示了每个操作的结果,这演示了值如何变化,尤其是在递增和递减 x 时。

关系运算符

在 C 语言中,关系运算符主要用于比较两个值或表达式并建立它们之间的关系。这些比较返回布尔值 true 或 false(0 和 1)。如果比较结果为 true,则返回 1;如果比较结果为 false,则返回 0。关系运算符中有几个运算符。以下表格有助于理解这些运算符在 C 语言中的工作原理:

运算符名称符号描述示例
等于==如果两个操作数相等,则相等运算符会验证这一点。x==y
不等于!=不等运算符确定两个操作数是否相等。x!=y
大于>大于运算符确定第一个操作数是否大于第二个操作数。x>y
小于<小于运算符确定第一个操作数是否小于第二个操作数。x<y
大于等于>=大于或等于运算符确定第一个操作数是否大于或等于第二个操作数。x>=y
小于等于<=小于或等于运算符确定第一个操作数必须小于或等于第二个操作数。x<=y

C 关系运算符示例

让我们举一个例子来说明 C 语言中的关系运算符。

示例

编译并运行

输出

The value of x is = 10
The value of y is = 20
The equality of two numbers (x == y) is: 0
The not equality of two numbers (x != y) is: 1
The Greater than of numbers (x > y) is: 0
The Less than of numbers (x < y) is: 1
The Greater than or equal to of numbers (x >= y) is: 0
The Less than or equal to of numbers (x <= y) is: 1

说明

在此示例中,我们演示了每个关系运算符如何分析条件并返回 1 (true) 或 0 (false),这对于决策和控制程序流非常重要。

逻辑运算符

在 C 语言中,逻辑运算符主要用于对布尔值(真和假)执行逻辑操作,并返回真 (1) 或假 (0)。这些运算符对于根据条件控制程序流程至关重要。如果比较结果为真,则返回 1;如果比较结果为假,则返回 0。以下表格有助于理解这些运算符在 C 语言中的工作原理。

运算符名称符号描述
逻辑与&&称为逻辑 AND 运算符。如果两个操作数都为,则逻辑 AND 运算符返回
(逻辑 OR)||称为逻辑 OR 运算符。如果至少有一个操作数为真,则逻辑 OR 运算符返回
(逻辑 NOT)!称为逻辑 NOT 运算符。逻辑 NOT 运算符否定操作数的值。

C 逻辑运算符示例

让我们举一个例子来说明 C 语言中的逻辑运算符。

示例

编译并运行

输出

Logical AND: Both a > 0 and b > 5 are true.
Logical OR: Either a < 0 or c == 0 is true.
Logical NOT: b < 5 is false, so !(b < 5) is true.

说明

在此示例中,我们评估了变量 a、b 和 c 的几个条件。之后,它根据所有、其中一个或没有条件为真来显示结果,展示了 &&、|| 和 ! 如何进行逻辑运算。

按位运算符

在 C 语言中,位运算符用于对整数数据类型执行位级操作。这些操作直接操作数据的单个位,这使得它们在低级编程、图形、加密和系统编程中很有用。以下表格有助于理解这些运算符在 C 语言中的工作原理:

运算符名称符号描述
按位与a&b按位 AND 运算符对操作数的相应位执行按位 AND 操作
按位或a|b按位 OR 运算符对操作数的相应位执行按位 OR 操作。
按位异或a^b按位 XOR 运算符对操作数的相应位执行按位异或操作。
按位非~a按位 NOT 运算符翻转操作数的每个位。
二进制左移a<<2将左操作数的位向左移动由右操作数提供的位数。空位用零填充。
二进制右移a>>2将左操作数的位向右移动由右操作数给出的位数。空位用符号位(对于有符号类型)或零填充。

C 位运算符示例

让我们举一个例子来说明 C 语言中的位运算符。

示例

编译并运行

输出

The value of bitwise AND - a&b is = 9
The value of bitwise OR - a|b is = 61
The value of bitwise XOR - a^b is = 52
The value of bitwise NOT - ~a is = -46
The value of binary left shift - a<<2 is = 180
The value of binary right shift - a>>2 is = 11

说明

在此示例中,我们演示了如何对两个整数 (a 和 b) 使用位运算符。它执行按位 AND、OR、XOR、NOT、二进制左移和二进制右移操作,并根据值的二进制表示打印结果。

赋值运算符

在 C 语言中,赋值运算符用于赋值和更新变量值。基本赋值运算符 (=) 将右侧操作数的值存储在左侧变量中,这对于变量初始化和更新至关重要。以下表格有助于理解这些运算符在 C 语言中的工作原理:

运算符名称符号描述
赋值=它将右操作数赋值给左操作数。
加法赋值+=它将右操作数加到左操作数上,并将结果赋值给左操作数。
减法赋值-=它将右操作数从左操作数中减去,并将结果赋值给左操作数。
乘法赋值*=将左操作数乘以右操作数,并将结果赋值给左操作数。
除法赋值/=它将左操作数除以右操作数,并将结果赋值给左操作数。
模数赋值%=它计算余数并将其赋值给左操作数。
位左移赋值<<=它左移并将结果赋值给左操作数。
位右移赋值>>=它右移并将结果赋值给左操作数。
按位 AND 赋值&=它执行按位 AND 操作,并将结果赋值给左操作数。
按位 OR 赋值|=它执行按位 OR 操作,并将结果赋值给左操作数。
按位 XOR 赋值^=它执行按位 XOR 操作,并将结果赋值给左操作数。

C 赋值运算符示例

让我们举一个例子来说明 C 语言中的赋值运算符。

示例

编译并运行

输出

The value of assignment operator c = a is c = 5
The value of a addition assignment operator c += a is c = 15
The value of a subtraction assignment operator c -= a is c = 5
The value of a multiplication assignment operator c *= a is c = 50
The value of a division assignment operator c /= a is c = 2
The value of a modulus assignment operator c %= a is c = 0
The value of a bitwise left shift operator c <<= 2 is c = 40
The value of a bitwise right shift operator c >>= 2 is c = 2
The value of a Bitwise AND Assignment operator c &= a is c = 0
The value of a Bitwise OR Assignment c |= a is c = 15
The value of a Bitwise XOR Assignment c ^= a is c = 15

说明

在此示例中,我们演示了如何对两个整数 a = 5 和 c 使用多个赋值运算符。它对 c 执行简单的算术、位和移位赋值操作,相对于 a,并打印每个操作的结果以演示 c 如何更新。

杂项运算符

在 C 语言中,杂项运算符指的是不属于算术、关系或逻辑类别的运算符。它们执行特殊操作,包括内存访问、类型转换和条件评估。C 语言中的几种杂项运算符如下所述:

运算符名称符号描述
sizeof 运算符sizeof它返回变量或数据类型的大小(以字节为单位)。
条件运算符 (? :)? :根据条件,返回两个值中的一个。
逗号运算符 (,),逗号运算符分析多个表达式并返回最后一个。
点 (.) 和箭头 (->) 运算符. 和 ->使用 . 直接访问结构成员,使用 -> 访问对象指针。
类型转换运算符类型转换它显式地将一个数据类型转换为另一个。
地址 (&) 运算符&取地址运算符。返回变量的内存地址。
解引用 (*) 运算符*指针解引用运算符。访问指针指定地址处的值。

C 杂项运算符示例

让我们举一个例子来说明 C 语言中的杂项运算符。

示例

编译并运行

输出

Size of int is: 4
Greater value using ? : is:  20
Result using comma operator is: 20
Employee age using . is : 25
Employee age using -> is : 25
After casting float to int: 5
The address of a is: 0x7ffdea010984
Value pointed by p is: 5

说明

在此示例中,我们演示了如何对整数、浮点数和结构使用 sizeof、三元 ?:、逗号、结构访问(. 和 ->)、类型转换、取地址 & 和指针解引用 *。

移位运算符

二元数的位可以通过移位运算符或向移动。C 语言支持两种移位运算符:

运算符名称符号描述
左移运算符<<左移运算符将第一个操作数的位向左移动由第二个参数指定的位数。
右移运算符>>右移运算符将第一个操作数的位向移动由第二个操作数指定的位数。

C 移位运算符示例

让我们举一个例子来说明 C 语言中的移位运算符。

示例

编译并运行

输出

The value of left shift operator is: 8 << 2 = 32
The value of right shift operator is: 10 >> 2 = 2

说明

在此示例中,我们演示了左移 (<<) 和右移 (>>) 位运算符。它对两个无符号整数的位进行移位并打印结果。

C 运算符优先级

运算符的优先级指定哪个运算符将首先计算,哪个其次。结合性指定运算符的求值方向;它可以是从左到右或从右到左。

让我们通过以下示例来理解优先级:

value 变量将包含 210,因为 * (乘法运算符) 在 + (加法运算符) 之前计算。

C 运算符的优先级和结合性如下:

类别符号结合性
后缀() [] ->. ++ - -从左到右
一元+ - ! ~ ++ - - (类型)* & sizeof从右到左
乘法* / %从左到右
加法+ -从左到右
移位<< >>从左到右
关系< <= > >=从左到右
相等== !=从左到右
按位与&从左到右
按位异或^从左到右
按位或|从左到右
逻辑与&&从左到右
逻辑或||从左到右
条件?:从右到左
赋值= += -= *= /= %=>>= <<= &= ^= |=从右到左
Comma (逗号),从左到右

结论

本文涵盖了多种 C 运算符,例如算术、关系、移位、逻辑、位、三元、赋值和其他运算符。我们还介绍了它们的特性、语法、示例以及预期结果。通过熟练掌握这些运算符,我们可以有效地处理数据并编写可靠的C 程序

C 运算符 MCQ

1) 以下哪个选项是 C 语言中比较两个值的正确运算符?

  1. ==
  2. :=
  3. =
  4. !=
 

答案: a) ==


2) 以下代码的输出是什么?

  1. 33
  2. 0
  3. 5
  4. Error
 

答案: c) 5


3) 以下哪个选项显示了 C 语言中的逻辑运算符?

  1. ==
  2. &&
  3. ++
  4. ::
 

答案: b) &&


4) 以下哪个选项在 C 语言中执行速度最快?

  1. p++
  2. ++p
  3. 只有 a
  4. a 和 b 都是
 

答案: d) a 和 b


5) 以下哪个运算符在 C 语言中具有最高的优先级?

  1. ++
  2. *
  3. =
  4. ()
 

答案: d) ()