Số thực (float/double) không tuân theo quy tắc kết hợp trong một số trường hợp do làm tròn.
Ví dụ
float x = -500000000; float y = 500000000; float z = 1; cout << x + (y + z); // 0 cout << (x + y) + z; // 1
Giải thích: y+z = 500000001 → làm tròn thành 500000000 → +x = 0. Nhưng (x+y)=0 → +z = 1.
Dùng int thì cả hai đều = 1.