📜  *= c++ (1)

📅  最后修改于: 2023-12-03 14:59:00.393000             🧑  作者: Mango

C++中的*=运算符

在C++中,*=是一个复合赋值运算符,用于将左操作数乘以右操作数并将结果存储在左操作数中。

int a = 5;
int b = 2;
a *= b;
cout << a << endl; // 输出10

等价于

int a = 5;
int b = 2;
a = a * b;
cout << a << endl; // 输出10
注意事项:
  1. *= 运算符仅适用于算术类型(如 intfloatdouble 等),而不适用于非算术类型 (如复合类型或自定义类型)。

  2. 如果左操作数不是指针,则右操作数的数据类型必须与左操作数的数据类型相同。但如果左操作数是指针,则右操作数可以是任何整数类型(如 intlong 等)。

int a = 5;
int *pa = &a;
pa *= 2; // 错误:'*=' 不能应用于指针和int类型
int a = 5;
int *pa = &a;
pa += 2; // 正确:指针加上一个整数类型的数值
小技巧:

在某些情况下,*= 运算符可以用来简化代码,例如将 a 的值加上 b 的两倍或三倍。

int a = 5;
int b = 2;
a += b * 2; // 等价于a = a + (b * 2);
cout << a << endl; // 输出9

a += b * 3; // 等价于a = a + (b * 3);
cout << a << endl; // 输出15

a -= b * 2; // 等价于a = a - (b * 2);
cout << a << endl; // 输出11

但是,这样的代码可读性并不好,不如使用显式的运算符。

// 更加清晰和易读的代码
int a = 5;
int b = 2;
a = a + (b * 2);
cout << a << endl; // 输出9

a = a + (b * 3);
cout << a << endl; // 输出15

a = a - (b * 2);
cout << a << endl; // 输出11

最好只在必要时使用 *= 运算符。