📅  最后修改于: 2023-12-03 14:59:00.393000             🧑  作者: Mango
在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
*=
运算符仅适用于算术类型(如 int
、float
、double
等),而不适用于非算术类型 (如复合类型或自定义类型)。
如果左操作数不是指针,则右操作数的数据类型必须与左操作数的数据类型相同。但如果左操作数是指针,则右操作数可以是任何整数类型(如 int
、long
等)。
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
最好只在必要时使用 *=
运算符。