C++ 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,在 C++ 中内置了丰富的运算符。包括:

运算符 描述
算术运算符 算术运算符是对数值类型的变量进行运算的,比如:加、减、乘、除和取模。
赋值运算符 赋值运算符是对已存在的变量进行重新设置新值的运算符。
关系运算符 关系运算符的结果都是布尔型,也就是要么是真,要么是假。
逻辑运算符 逻辑运算符是用于连接多个条件(一般是关系表达式),最终的结果也是一个布尔值。
位运算符 位运算符主要是用于数值类型的二进制的运算。
指针运算符 其他运算符主要是对指针变量的操作,涉及到取变量的地址(&) 和获取指针变量的值(*)。
sizeof 运算符 sizeof 运算符用于计算一个变量或者数据类型占用的内存的字节数。

算术运算符

在 C++ 中,算术运算符是对数值类型的变量进行运算的,比如:加、减、乘、除和取模。

下表列出了 C++ 支持的算术运算符:

运算符 说明 示例 结果
+ 正号 +3 3
- 负号 -4 -4
+ 加法运算 5 + 5 10
- 减法运算 10 – 5 5
* 乘法运算 5 * 2 10
/ 除法运算 10 / 3 3
% 取模运算(整除后的余数) 10 % 3 1
++ 自增运算(整数值增加 1) a = 2; a++ 3
-- 自减运算(整数值减少 1) a = 10; a– 9

注意:如果是整数之间做除法运算(/)时,只保留整数部分而舍弃小数部分。

前自增与后自增

在 C++ 中,自增运算符(++)与自减运算符(--)都是有前自增与后自增、前自减和后自减的区别的。

  • 前自增与后自增的区别是前自增是先自增后赋值,后自增是先赋值后自增。
  • 前自减与后自减的区别是前自减是先自减后赋值,后自减是先赋值后自减。

例如:

int a = 0; int b = a++;  // 结果:a = 1, b = 0
int a = 0; int b = ++a;  // 结果:a = 1, b = 1

关系运算符

关系运算符也称为“比较运算符”。在 C++ 中,关系运算符的结果要么是真,要么是假。关系表达式经常用在条件判断语句或循环语句中。

下表列出了 C++ 支持的关系运算符:

运算符 说明 示例 结果
== 相等 4 == 3 假,也就是 0
!= 不等于 4 != 3 真,也就是 1
< 小于 4 < 3 假,也就是 0
> 大于 4 > 3 真,也就是 1
<= 小于等于 4 <= 3 假,也就是 0
>= 大于等于 4 >= 3 真,也就是 1

逻辑运算符

在 C++ 中,逻辑运算符是用于连接多个条件(一般来讲就是关系表达式),最终的结果也是返回真或假,即 true 和 false。

下表列出了 C++ 支持的逻辑运算符:

运算符 说明 示例
&& 逻辑与 A && B
|| 逻辑或 A || B
! 逻辑非 !A

位运算符

在 C++ 中,位运算符主要是用于数值类型的二进制的运算。位运算符作用于位,并逐位执行操作,主要有与、或、非、亦或等操作。为了更好的理解位运算,先看下面真值表。

p q p & q(与) p | q(或) p ^ q(亦或)
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设如果 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 & B
| 按位或 A | B
^ 按位异或 A ^ B
<< 左移运算符 A << 2
>> 右移运算符 A >> 2

赋值运算符

在 C++ 中,赋值运算符是对已存在的变量进行重新设置新值的运算符。除了使用等号(=)赋值,C++ 还允许其他运算符号与等号连接使用,比如算数运算符和位运算符。因此赋值运算符可分为两组,即十进制运算和二进制运算。

十进制运算

运算符 说明 示例 结果
= 将一个表达式的值赋给另一个 C = A + B C = A + B
+= 相加后再赋值 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

指针运算符

在 C++ 中,指针运算符主要包括取地址运算符 & 和取值运算符 *

运算符 说明 示例
& 返回变量的地址 &A
* 获取指针变量对应的值 *A

杂项运算符

除了上面的运算符,C++ 还支持成员运算符、sizeof 运算符、三目运算符等等,都归为杂项运算符这一类。

下表列出了 C++ 支持的其他一些重要的运算符:

运算符 描述 示例
sizeof 返回变量的大小 sizeof(type);
sizeof(varname);
? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y max = a > b ? a : b;
, 逗号运算符。逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值
.-> 成员运算符,用于引用类、结构和共用体的成员 student.age;
student->age;
Cast 强制转换运算符,把一种数据类型转换为另一种数据类型

Leave a Reply