Bạn kiếm một cuốn sách dạy lập trình C/C++ để đọc bạn sẽ thấy họ giải thích chỗ đó, mình hiểu nhưng không thể giải thích cho người khác được.
Hầu hết các tình huống, trình biên dịch sẽ sinh ra mã assembly giống nhau, nhưng trong một số trường hợp a = a + b sẽ được xem là evaluated những hai lần.
Cho nên, với lập trình viên ở mức thông thường, cứ xem a = a + b và a += b là như nhau cho dễ. Đến một ngày nào đó thì tự nhiên sẽ biết nó khác ra sao.
Điều này giống như học tiếng Anh, vào lớp 7-8 mà viết câu I do love her. thì sẽ bị cho là sai ngữ pháp và câu đó sẽ không có điểm, nhưng sinh viên năm 3 ngành Ngôn ngữ Anh viết câu đó sẽ chẳng ai nói gì.
Mình không phải lập trình viên ở cấp độ nào hết, cho nên cũng chỉ biết a = a + b và a += b có sự khác biệt, đọc giải thích trong mấy sách dạy lập trình thì thấy có ví dụ hiểu được, có ví dụ thấy rối rắm, nhưng với những đoạn mã thông thường cho trường hợp a, b là integer thì viết cách nào cũng được.