Vì vậy, tôi biết rằng C++ có ưu tiên điều hành và rằngC/C++ Math Order of Operation
int x = ++i + i++;
là undefined vì trướC++ và gửi ++ là cùng cấp và do đó không có cách nào để nói cái nào sẽ được tính toán trước. Nhưng những gì tôi đã tự hỏi là nếu
int i = 1/2/3;
không xác định. Lý do tôi hỏi là vì có nhiều cách để nhìn vào điều đó (1/2)/3 HOẶC 1/(2/3). Tôi đoán rằng đó là hành vi không xác định nhưng tôi muốn xác nhận.
Không, nó không được xác định. Đó là (một chia cho hai) chia cho ba. Đó là một biểu thức toán học thông thường, nói cách khác. –
Tôi nghĩ rằng suy nghĩ của bạn là một chút mơ hồ ở đây về một trong những đầu tiên và đổ máu vào suy nghĩ của bạn về thứ hai. Việc đầu tiên thực sự sôi xuống theo thứ tự đánh giá đối số cho một hàm không xác định. Tức là, nếu bạn nghĩ về nó như là 'toán tử + (++ i, i ++)' thì nó nhảy ngay tại bạn. –
C++ (và hầu hết các ngôn ngữ lập trình khác) có thứ tự ưu tiên được xác định được mượn từ toán học. Bạn không nhìn vào một biểu thức nhiều cách; các phép toán có một hệ thống phân cấp. Tuy nhiên bạn có thể thay đổi thứ tự của một thao tác sử dụng dấu ngoặc đơn (được đặt tốt). –