Tôi chỉ đi qua một đoạn mã tôi thấy thú vị (vì tôi chưa bao giờ thấy nó như là một câu hỏi trước khi trong 2 năm của chương trình)Java thứ tự ưu tiên
int x = 5;
int y = 3;
int z = y + (y+=1) % 4 + (x-=2)/3;
System.out.println(z);
Đầu ra là 4.
Tôi tự hỏi tại sao 'y' bên trái được đánh giá đầu tiên thay vì '(y + = 1)' mà sau đó sẽ dẫn đến kết quả là 5 (nói cách khác, tại sao khung không buộc thứ tự ưu tiên?)
Tôi không chắc chắn nên tìm kiếm gì từ khi tìm kiếm 'thứ tự ưu tiên java' trả về kết quả tha t lúc tốt nhất cho thấy các ví dụ phức tạp của y ++, ++ y loại câu hỏi hoặc chỉ thứ tự bảng ưu tiên.
Tôi đã gắn thẻ Java nhưng tôi đã thử nghiệm điều này bằng C# và javascript để nó có lẽ là một điều chung trong lập trình.
Cập nhật
Tôi đã nhầm lẫn về thứ tự ưu tiên và thứ tự đánh giá.
Điều này article đã giúp tôi hiểu thêm về các câu trả lời được cung cấp.
Điều kỳ lạ về việc đánh giá cụm từ ngoài cùng bên trái trước tiên? –
Bạn sẽ không thấy đó là một câu hỏi bởi vì bất kỳ lập trình viên nào đáng giá muối của anh ấy cũng sẽ không viết một cái gì đó như thế. Những loại câu hỏi này khá vô giá trị. – Kayaman
@JFMeier Tôi muốn biết tại sao khung '(y + = 1)' không được thực hiện trước. – Stein121