C++中的复合赋值运算符


复合赋值运算符的形式为 e1 op= e2,其中 e1 是一个可修改的左值,其类型不是 const 类型,e2 是以下之一:

  • 算术类型
  • 如果 op 是 + 或 –,则为指针

e1 op= e2 的形式的行为与 e1 = e1 op e2 相同,但 e1 只计算一次。

以下是 C++ 中的复合赋值运算符:

运算符
描述
*=
将第一个操作数的值乘以第二个操作数的值;将结果存储在第一个操作数指定的对象中。
/=
将第一个操作数的值除以第二个操作数的值;将结果存储在第一个操作数指定的对象中。
%=
取第一个操作数模第二个操作数的值;将结果存储在第一个操作数指定的对象中。
+=
将第二个操作数的值加到第一个操作数的值上;将结果存储在第一个操作数指定的对象中。
-=
从第一个操作数的值中减去第二个操作数的值;将结果存储在第一个操作数指定的对象中。
<<=
将第一个操作数的值左移由第二个操作数的值指定的位数;将结果存储在第一个操作数指定的对象中。
>>=
将第一个操作数的值右移由第二个操作数的值指定的位数;将结果存储在第一个操作数指定的对象中。
&=
获取第一个和第二个操作数的按位与;将结果存储在第一个操作数指定的对象中。
^=
获取第一个和第二个操作数的按位异或;将结果存储在第一个操作数指定的对象中。
|=
获取第一个和第二个操作数的按位或;将结果存储在第一个操作数指定的对象中。

示例

让我们来看一个使用其中一些运算符的示例:

#include<iostream>
using namespace std;

int main() {
   int a = 3, b = 2;

   a += b;
   cout << a << endl;

   a -= b;
   cout << a << endl;

   a *= b;
   cout << a << endl;

   a /= b;
   cout << a << endl;

   return 0;
}

输出

这将给出以下输出:

5
3
6
3

请注意,对枚举类型的复合赋值会生成错误消息。如果左操作数是指针类型,则右操作数必须是指针类型,或者必须是计算结果为 0 的常量表达式。如果左操作数是整型,则右操作数不能是指针类型。

更新于:2020年2月11日

3K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告