亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言运算符大全:算术、关系、逻辑、位运算、赋值与优先级详解

运算符是告诉编译器执行特定数学或逻辑运算的符号。C 语言内置运算符丰富,提供下列类型:

本章逐一讲解各运算符工作方式。

算术运算符

下表列出 C 语言支持的所有算术运算符。假设变量 A 为 10,变量 B 为 20:

显示示例

运算符描述示例
+两操作数相加A + B = 30
-第一操作数减第二操作数A - B = -10
*两操作数相乘A * B = 200
/分子除以分母B / A = 2
%取模运算符,整数除法后余数B % A = 0
++自增运算符,整数值加 1A++ = 11
--自减运算符,整数值减 1A-- = 9

关系运算符

下表列出 C 支持的所有关系运算符。假设变量 A 为 10,变量 B 为 20:

显示示例

运算符描述示例
==检查两操作数值是否相等。相等则条件为真。(A == B) 不为真。
!=检查两操作数值是否相等。不等则条件为真。(A != B) 为真。
>检查左操作数是否大于右操作数。是则条件为真。(A > B) 不为真。
<检查左操作数是否小于右操作数。是则条件为真。(A < B) 为真。
>=检查左操作数是否大于等于右操作数。是则条件为真。(A >= B) 不为真。
<=检查左操作数是否小于等于右操作数。是则条件为真。(A <= B) 为真。

逻辑运算符

下表列出 C 语言支持的所有逻辑运算符。假设变量 A 为 1,变量 B 为 0:

显示示例

运算符描述示例
&&逻辑与运算符。两操作数均非零则条件为真。(A && B) 为假。
||逻辑或运算符。任一操作数非零则条件为真。(A || B) 为真。
!逻辑非运算符。反转操作数逻辑状态。条件为真则逻辑非使其为假。!(A && B) 为真。

位运算符

位运算符作用于位,执行逐位操作。&、|、^ 真值表如下:

pqp & qp | qp ^ q
00000
01011
11110
10011

假设 A = 60,B = 13,二进制格式如下:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表列出 C 支持的位运算符。假设变量 'A' 为 60,变量 'B' 为 13:

显示示例

运算符描述示例
&二进制与运算符,若位在两操作数中存在则复制到结果。(A & B) = 12, 即 0000 1100
|二进制或运算符,若位在任一操作数存在则复制。(A | B) = 61, 即 0011 1101
^二进制异或运算符,若位在一操作数设置但不在两者中则复制。(A ^ B) = 49, 即 0011 0001
~二进制取反运算符,一元运算符,效果为“翻转”位。(~A ) = ~(60), 即 -0111101
<<二进制左移运算符。左操作数值左移右操作数指定位数。A << 2 = 240 即 1111 0000
>>二进制右移运算符。左操作数值右移右操作数指定位数。A >> 2 = 15 即 0000 1111

赋值运算符

下表列出 C 语言支持的赋值运算符:

显示示例

运算符描述示例
=简单赋值运算符。将右侧操作数值赋给左侧操作数C = A + B 将 A + B 的值赋给 C
+=加后赋值运算符。右操作数加到左操作数并将结果赋给左操作数。C += A 等价于 C = C + A
-=减后赋值运算符。左操作数减右操作数并将结果赋给左操作数。C -= A 等价于 C = C - A
*=乘后赋值运算符。右操作数乘左操作数并将结果赋给左操作数。C *= A 等价于 C = C * A
/=除后赋值运算符。左操作数除右操作数并将结果赋给左操作数。C /= A 等价于 C = C / A
%=取模后赋值运算符。用两操作数取模并将结果赋给左操作数。C %= A 等价于 C = C % A
<<=左移后赋值运算符。C <<= 2 等同于 C = C << 2
>>=右移后赋值运算符。C >>= 2 等同于 C = C >> 2
&=按位与赋值运算符。C &= 2 等同于 C = C & 2
^=按位异或赋值运算符。C ^= 2 等同于 C = C ^ 2
|=按位或赋值运算符。C |= 2 等同于 C = C | 2

杂项运算符:sizeof & 三元运算符

除上述运算符外,C 语言还支持 sizeof 和 ? : 等重要运算符。

显示示例

运算符描述示例
sizeof()返回变量大小。sizeof(a),a 为整型,返回 4。
&返回变量地址。&a; 返回变量实际地址。
*指向变量的指针。*a;
? :条件表达式。若 Condition 为真 ? 则值 X : 否则值 Y

C 语言运算符优先级

运算符优先级决定表达式中项的分组,决定表达式求值方式。某些运算符优先级高于其他;如乘法运算符优先级高于加法。

例如 x = 7 + 3 * 2;x 被赋值 13 而非 20,因 * 优先级高于 +,先计算 3*2 再加 7。

下表顶部优先级最高,底部最低。表达式中高优先级运算符优先求值。

显示示例

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

C语言

  1. C#运算符——C#运算符全面指南
  2. 掌握 C# 位运算与移位运算符:全面指南
  3. 掌握 C++ 运算符:六大类型全解析与实战示例
  4. C 语言运算符完全指南:算术、关系、逻辑、位运算等
  5. C 语言位运算符精通:与、或、异或、移位、取反全解析
  6. C++运算符大全:算术/关系/逻辑/位/赋值/杂项与优先级结合性
  7. C# 运算符完全指南:算术、关系、逻辑、位运算、赋值及优先级
  8. Verilog 运算符:综合必备的算术与控制运算符
  9. MATLAB 运算符大全:矩阵/数组算术、关系、逻辑、位运算、集合运算详解
  10. 精通Python运算符:全面指南
  11. 精通 Java 运算符:类型、语法与实战示例
  12. Java 核心运算符全面指南