EDIT: Đó là cú pháp pháp lý, nhưng kết quả trong hành vi undefined nếu bạn sử dụng x
.
Đó là không phải hợp pháp vì bạn chỉ định biến chưa được khởi tạo với biến khác (tốt, giống nhau) chưa được khởi tạo. Chỉ vì nó biên dịch không có nghĩa là nó hợp pháp. Đó là cú pháp C++ hợp lệ, có, nhưng không hợp pháp.
Phía bên tay phải của toán tử gán phải được đánh giá đầy đủ tại thời điểm gán. Trong trường hợp này, đó là i
, không được khởi tạo.
Tín dụng cho Steve Jessop, người đào lên báo giá:
4,1/1, giá trị trái-to-rvalue chuyển đổi
[...] nếu đối tượng chưa được định hình, một chương trình yêu cầu chuyển đổi này có hành vi không xác định.
Nguồn
2012-06-25 09:03:21
Đối với tôi nó không phải là bất hợp pháp, nó chỉ là một sự lạm dụng ký hiệu. –
Nó đánh giá là (i) 'int i' (ii)' i = i' theo thứ tự đó –
Tôi nghĩ cùng một lý do mà chỉ 'int i;' mà không bao giờ gán 'i' là hợp pháp. – asmeurer