Tôi vô tình tạo lỗi trong chương trình bằng cách tự tham chiếu trong một mảng. Đây là một chương trình demo rất đơn giản tương tự như trong khái niệm:C++ tự tham chiếu mảng?
#include <iostream>
using namespace std;
int kTest[] = {
kTest[0]
};
int main() {
cout << kTest[0] << endl;
}
Tôi rất ngạc nhiên khi nhận được lỗi trình biên dịch hoặc thậm chí là cảnh báo về mã này! Trong trường hợp của tôi nó kết thúc sản xuất đầu ra không thể đoán trước. Là nó truy cập bộ nhớ rác?
Tôi đã tò mò về những điều kiện này sẽ có đầu ra tốt (nếu bao giờ!).
Chỉnh sửa: Có khác biệt gì nếu kTest
là static
? Điều gì về const
? Cả hai?
hmm. toàn cầu 'int' là không khởi tạo vì vậy tôi tự hỏi nếu vì nó là hợp pháp. – NathanOliver
Trong trường hợp tiêu chuẩn ngôn ngữ cho phép loại cú pháp này. –
Nó không khác với ['int x = x;'] (http://stackoverflow.com/questions/14935722/does-initialization-entail-lvalue-to-rvalue-conversion-is-int-xx-ub) . –