Giả sử câu hỏi là về các nhà điều hành được xây dựng trong ++
và --
, không có tuyên bố nào là hợp pháp.
Hai chữ cái đầu tiên là cũng được tạo thành, nghĩa là chúng chỉ đơn thuần là compilable vì kết quả tăng tiền tố là lvalue. Hai số cuối cùng là hình thành không chính xác, vì kết quả tăng thêm hậu tố không phải là một rvalue, đó là lý do tại sao bạn không thể gán cho nó.
Tuy nhiên, ngay cả hai trường hợp đầu tiên không hợp pháp theo nghĩa là chúng tạo ra hành vi không xác định. Nó là bất hợp pháp để sửa đổi cùng một đối tượng nhiều hơn một lần mà không có một điểm chuỗi can thiệp. (Lưu ý rằng, các trình biên dịch được phép từ chối biên dịch mã được tạo đúng cũng tạo ra hành vi không xác định, có nghĩa là ngay cả cặp đầu tiên có thể chứng minh là không tương thích).
thể trùng lặp của http://stackoverflow.com/questions/1860461/why-is-i-i-1-unspecified-behavior –
Bài tập về nhà? Câu hỏi kiểm tra? –
Không thực sự cả hai. Chỉ tò mò muốn biết. – ckv