2008-11-10 34 views
14

Tuần cuối cùng trong cuộc thi ACM ICPC Mexico, tôi đã bỏ lỡ "return 0" trên chương trình C++. Vì lý do này, chúng tôi bị phạt 20 phút.return 0 implicit

Tôi đã đọc rằng tiêu chuẩn không bắt buộc chúng tôi viết nó vào cuối một chức năng chính. Nó là tiềm ẩn, phải không? Làm thế nào tôi có thể chứng minh điều đó?

Chúng tôi đang sử dụng hệ thống Fedora có trình biên dịch G ++.

+0

Bạn có chắc chắn muốn gắn thẻ "C" này cũng như "C++" không? Câu hỏi của bạn dường như chỉ liên quan đến C++. FWIW, C99 cung cấp trả về ngầm 0 trong chính, các tiêu chuẩn trước đó của C thì không. – Chris

+3

Điều này nhắc nhở tôi về thời gian tôi được giao 9/10 cho một bài tập toán vì tôi không viết ngày ở phía trên bên phải của trang và nhấn mạnh nó. –

+1

Bạn đã bỏ lỡ 'return 0' trong' main' hoặc trong một hàm khác? Nó chỉ ẩn trong 'main'. – fredoverflow

Trả lời

26

Bạn tham khảo các tiêu chuẩn ++ C, chương 3.6.1 đoạn 5:

Một tuyên bố trở lại trong chính có tác dụng rời khỏi chức năng chính (phá hủy bất kỳ đối tượng với thời gian lưu trữ tự động) và gọi số thoát với giá trị trả về là đối số . Nếu kiểm soát đạt đến cuối của chính mà không gặp phải một tuyên bố trở lại , hiệu quả là của thực hiện return 0;

Nếu bạn chưa có các tiêu chuẩn trong tầm tay, bạn có thể hiển thị sau đó đoạn trong một dự thảo công tác . Đây là một cho C++ 98, đã được xác định này.

Bạn có thể tìm hiểu thêm here.

+3

Việc đánh giá là tự động tại các cuộc thi ACM. Vì vậy, vì một số lý do nó không biên dịch vì thiếu báo cáo trả về. Đây có phải là kết quả của một trình biên dịch cũ không? – mmcdole

+0

Liên kết không hoạt động. –

0

Bạn có thể hiển thị cho họ dòng trong số Bjarne Stroustrup's book xác định tiêu chuẩn trong đó nêu rõ: vì đó là tiêu chuẩn chuẩn cho ngôn ngữ, nó không mở để tranh luận. Thật không may tôi không có một bản sao để tìm nó lên bản thân mình.

+1

Um. Cuốn sách đó không xác định tiêu chuẩn. Tiêu chuẩn này là tiêu chuẩn BS ISO/IEC 14882: 1998 cộng với quy trình kỹ thuật. Nếu hai người không đồng ý thì cuốn sách của Bjarne là sai cho đến khi toàn bộ cơ thể tiêu chuẩn quyết định khác (dĩ nhiên là anh ta trên thân thể đó, vì vậy những bất đồng có xu hướng là lỗi chính tả ...) –

+2

Tôi đồng ý với câu trả lời thực tế - mong rằng cuốn sách được chấp nhận là chính xác trong một vấn đề như thế này bởi bất cứ ai biết họ đang làm gì. Nó mô tả các tiêu chuẩn chính xác afaik. Nó chỉ không "xác định" tiêu chuẩn, vì vậy nó là trong lý thuyết mở để tranh luận. –