Nếu hàm có kiểu trả về khác với void
và hàm không trả về bất kỳ thứ gì, thì tôi đoán trình biên dịch trả về giá trị rác (có thể được xem là giá trị chưa được khởi tạo). Nó xảy ra vào thời gian biên dịch, vậy tại sao nó không nên ném một lỗi?Nếu một hàm trả về không có giá trị, với kiểu trả về hợp lệ, thì trình biên dịch có thể vứt rác không?
Ví dụ,
int func1() {
return; // error
}
int func2() {
// does not return anything
}
Thứ hai func2
nên ném ra một lỗi, nhưng nó không. Có lý do gì không? Suy nghĩ của tôi là như vậy mà, nó có thể được xem như là một giá trị chưa được khởi tạo, vì vậy nếu chúng ta cần phải ném ra một lỗi trong trường hợp thứ hai, sau đó chúng ta cần phải ném lỗi, nếu một giá trị chưa được định hình, nói
int i; // error
int i = 6; // okay
Bất kỳ suy nghĩ, hay đây là một câu hỏi trùng lặp? Tôi đánh giá cao sự giúp đỡ của bạn.
Có phải C hoặc C++ không? Bạn có nhận được lỗi biên dịch hoặc cảnh báo không? Bạn đang sử dụng trình biên dịch nào? – littleadv
Bật cảnh báo của bạn. –
có thể trùng lặp của [tùy chọn gcc: cảnh báo về các chức năng không có hiệu lực mà không có câu lệnh trả lại] (http://stackoverflow.com/questions/9924570/gcc-options-warning-on-non-void-functions-without-a- return-statement) –