Undefined behavior 
Nguyên một dây cout >> như vậy không có chỗ nào là sequence point, mà trong đó lại có (songuyen += 3) với sothuc *= 3 nữa là toi. (C++14 mới hạn chế mỗi >> là 1 point). Chỗ này rất khó hiểu 
Sequence point là nơi mà các biểu thức trước nó phải chấm dứt việc tính kết quả và thực hiện side effect. Giữa hai điểm này, các biểu thức có thứ tự tính toán và thực hiện side effect độc lập và (có thể) xen kẽ hay cùng chạy với nhau. Vì vậy, vừa thay đổi vừa lấy giá trị, hoặc thay đổi quá một lần là không được.