Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Toán tử gán phức hợp (Compound Assignment Operators) trong C++

Các toán tử gán phức hợp được chỉ định theo dạng e1 op= e2, trong đó e1 là l-value có thể sửa đổi, không phải const, và e2 là một trong:

  • Kiểu số học
  • Con trỏ, nếu op là + hoặc -

Dạng e1 op= e2 hoạt động như e1 = e1 op e2, nhưng e1 chỉ được đánh giá một lần.

Dưới đây là các toán tử gán phức hợp trong C++:

Toán tử Mô tả
*=Nhân toán hạng 1 với toán hạng 2; lưu kết quả vào đối tượng toán hạng 1.
/=Chia toán hạng 1 cho toán hạng 2; lưu kết quả vào đối tượng toán hạng 1.
%=Lấy modulus toán hạng 1 theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1.
+=Cộng toán hạng 2 vào toán hạng 1; lưu kết quả vào đối tượng toán hạng 1.
-=Trừ toán hạng 2 từ toán hạng 1; lưu kết quả vào đối tượng toán hạng 1.
<<=Dịch trái toán hạng 1 số bit theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1.
>>=Dịch phải toán hạng 1 số bit theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1.
&=Lấy bitwise AND của 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1.
^=Lấy bitwise XOR của 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1.
|=Lấy bitwise OR của 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1.

Ví dụ

#include <iostream>
using namespace std;
int main() {
    int a = 3, b = 2;
    a += b; cout << a << endl;  // 5
    a -= b; cout << a << endl;  // 3
    a *= b; cout << a << endl;  // 6
    a /= b; cout << a << endl;  // 3
    return 0;
}

Kết quả

5
3
6
3

Lưu ý: Gán phức hợp cho kiểu liệt kê (enum) sinh ra lỗi. Nếu toán hạng trái là con trỏ, toán hạng phải phải là con trỏ hoặc biểu thức hằng số đánh giá thành 0. Nếu toán hạng trái là kiểu nguyên, toán hạng phải không được là con trỏ.