Gần đây tôi đã tìm hiểu về toán tử ,
và thực tế là nó giới thiệu một điểm chuỗi .i = 0, ++ i được xác định?
Tôi cũng học được rằng đoạn mã sau dẫn đến hành vi undefined:
i = ++i;
Vì i
đã được sửa đổi hai lần giữa hai điểm theo thứ tự.
Nhưng còn các mã sau thì sao?
i = 0, ++i;
i = (0, ++i);
Trong khi tôi biết các quy tắc, tôi không thể đi đến kết luận. Vì vậy, nó được xác định hành vi hay không?
chỉnh sửa: Cũng như @paxdiablo đề cập, xác định hoặc không, đây thực sự là một xấu thực hành mà nên tránh. Câu hỏi này chỉ được yêu cầu cho mục đích giáo dục và hiểu rõ hơn về "quy tắc".
Tôi không biết _why_ mọi người tiếp tục đặt câu hỏi như thế này. Nó không quan trọng cho dù đó là không xác định, đó là mã crappy. Bạn nên _never_ sử dụng nó, được xác định hoặc cách khác. – paxdiablo
@paxdiablo: Bạn có thực sự nghĩ rằng tôi muốn sử dụng một tuyên bố vô dụng trong mã thực sự?! Nó chỉ là về sự hiểu biết các quy tắc tốt hơn. Chỉ có bấy nhiêu thôi. – ereOn
@ereOn rất tốt để tìm hiểu các quy tắc, đó là sự thật. Nhưng sau một thời gian kinh nghiệm thường dẫn các lập trình viên để tránh bất kỳ cấu trúc nào không được xác định rõ và sử dụng phổ biến trên tất cả các nền tảng. –