C++中常见赋值及复合赋值运算符整理如下:
运算符 | 名称 | 示例代码 | 说明/等价于 | 常见用途/重载类型 |
---|---|---|---|---|
= | 赋值运算符 | a = b; | 赋值,将b的值赋给a | 所有类型 |
+= | 加法赋值 | a += b; | a = a + b; | 数值、字符串拼接等 |
-= | 减法赋值 | a -= b; | a = a - b; | 数值 |
*= | 乘法赋值 | a *= b; | a = a * b; | 数值 |
/= | 除法赋值 | a /= b; | a = a / b; | 数值 |
%= | 取模赋值 | a %= b; | a = a % b; | 整数 |
&= | 按位与赋值 | a &= b; | a = a & b; | 整数、位运算 |
|= | 按位或赋值 | a |= b; | a = a | b; | 整数、位运算 |
^= | 按位异或赋值 | a ^= b; | a = a ^ b; | 整数、位运算 |
<<= | 左移赋值 | a <<= b; | a = a << b; | 整数、位运算 |
>>= | 右移赋值 | a >>= b; | a = a >> b; | 整数、位运算 |
说明:
• 这些运算符大多数可以被自定义类型(如类)重载,实现特定的赋值逻辑。
• 复合赋值运算符通常返回对自身的引用(*this),支持链式操作。
• 例如,std::string重载了+=,用于字符串拼接。
示例:
#include <iostream>
#include <string>
int main() {
// 赋值
int a = 10;
int b = 3;
a = b; // 赋值运算符
// 复合赋值运算符示例
a += 5; // a = a + 5,结果a为8
a -= 2; // a = a - 2,结果a为6
a *= 4; // a = a * 4,结果a为24
a /= 6; // a = a / 6,结果a为4
a %= 3; // a = a % 3,结果a为1
int x = 5;
int y = 2;
x <<= y; // x = x << y,结果x为20
x >>= 1; // x = x >> 1,结果x为10
x &= 6; // x = x & 6,结果x为2
x |= 1; // x = x | 1,结果x为3
x ^= 2; // x = x ^ 2,结果x为1
std::cout << "a: " << a << std::endl;
std::cout << "x: " << x << std::endl;
return 0;
}