21

一部の C++ コンパイラで int main() を使用しているときに return ステートメントを含める必要がないのはなぜですか? Turbo C++ はどうですか?

4

7 に答える 7

26

C++ および C99/C11 では、main 関数に return ステートメントがない場合、デフォルトで 0 を返します

§ 3.6.1 主な機能

main の return ステートメントには、main 関数を離れ (自動保存期間を持つオブジェクトをすべて破棄する)、戻り値を引数として std::exit を呼び出すという効果があります。制御が return ステートメントに遭遇せずに main の最後に達した場合、結果は return 0 を実行することになります。

ウィキページもお読みください C/C++ main 関数

戻り値がプログラマーによって定義されていない場合、暗黙の戻り値 0; main() 関数の最後に、コンパイラによって挿入されます。この動作は、C++ 標準で必要です。

于 2013-08-23T12:31:21.023 に答える
0

他の人が述べているように、コンパイラによっては明示的に要求しないものもありますがreturn 0;、(可能であれば) 常に実行することをお勧めします。メイン関数から戻ることを禁止するコンパイラの使用はお勧めしません。

int main からの戻り値は非常に重要であり、実際に用途があることに注意してください。

main からの戻り値は、プログラムからexit statusまたはと呼ばれることがあり、ゼロは正常に完了したことを示します。error code他のプログラムやスクリプトがこのコードにアクセスして、プログラムが正常に完了したかどうかを判断できます。

詳細はこちら: http://en.wikipedia.org/wiki/Exit_status

于 2013-08-23T14:37:46.240 に答える