Thực ra, trình biên dịch có thể cung cấp cho bạn gợi ý. Tôi nói: "cảnh báo C4700: biến cục bộ 'a' được sử dụng mà không bị khởi tạo".
Nhưng đây không phải là lỗi trên mỗi lần khai báo, khai báo chỉ cung cấp tên biến cho một số bit bộ nhớ mà không cần chạm vào nó, nó hợp lệ và nhanh chóng. Và sự khẳng định ở đây không thực sự là một sự khẳng định, chỉ cần di chuyển các bit từ phải sang trái. Không kiểm tra lại. Rất hiệu quả, rất không an toàn.
Mọi hoạt động đều hợp pháp, nhưng toàn bộ điều là vô nghĩa. Vì vậy, trình biên dịch làm điều tốt nhất có thể - nó biên dịch mã, nhưng cũng đưa ra một cảnh báo.
Nó sẽ không thực sự cho phép 'a' được tuyên bố - với rác - và sau đó có lẽ in rác đó? Cũng dựa trên logic của bạn không có gì sẽ có thể được chỉ định trong một tuyên bố. 'int a = 1;' sẽ thất bại vì phép gán "đọc từ phải sang trái" và do đó 'a' không khai báo; Không? – ChiefTwoPencils
nó là cùng một giá trị rác trong 'a' để bắt đầu với vì bạn chưa bao giờ khởi tạo' a'. – dandan78
bản sao có thể có của [Tự khởi tạo 'A a = a;' được phép?] (http://stackoverflow.com/questions/981714/is-self-initialization-aaa-allowed) Cũng ở đây: http://stackoverflow.com/questions/3173462/int-var-1-void-main -int-ii – jogojapan