• 締切済み

C++言語のmain関数の戻値について

WindowsでVisualC++を使っています。int main() {~return 0;} で正常終了ですが、int main(){~return 1;}と0以外の数値を返してしまった場合、OSは何か処理をするのでしょうか?何かゴミ・スレットや、プログラムがメモリに残ったり、問題が残るのでしょうか? よろしくお願いします。

みんなの回答

  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.5

mainの戻り値は、単体で動くプログラムならどうでもいい話ですね。 一般的にはシェルから、そのプログラム起動して、プログラム終了後にシェルで戻り値を取得して、その後の処理に使うってのが、よくある使われ方だと思います。

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.4

プログラムの動作に影響はありません。プログラムが終わった後に、そのプログラムを呼び出したプログラムで、returnの値を取得できます。 コマンドプロンプトから起動した場合は、環境変数%ERRORLEVL%にその値がセットされます。 Explorerから起動した場合は知る手段は無いと思います。 returnを書かないと、呼び出し元が受け取る値は不定ですが、プログラムの動作に影響はありません。 > IF ERRORLEVEL==1 GOTO NORMAL > IF ERRORLEVEL==0 GOTO EXCEPTION 書き方が、間違ってますね。それぞれ=は無視されて、1つめは「ERRORLEVELが1以上なら」、2つ目は「ERRORLEVELが0以上なら(=常に)」という意味になります。知っている人はそう読めますが、知らない人だと「ERRORLEVELが1に等しいときは」「ERRORLEVELが0に等しいときは」と勘違いするでしょう。 イコールで比較したかったら、 IF %ERRORLEVEL%==1 GOTO NORMAL IF %ERRORLEVEL%==0 GOTO EXCEPTION です。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>main()関数の最後にreturnがあってもなくても基本的には関係ありません。 ホントですか? main関数の戻り値がint型であると規格で決まっている以上、 int型の何らかの値を戻す必要があるはずです。 戻した値をどのように使うかはやりたいことしだいってことで。

  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.2

main()関数の最後にreturnがあってもなくても基本的には関係ありません。 main()の最後のreturnの値は、main()関数でリンクされた実行プログラム、Windowsなら.exeファイルですが、それをバッチファイルで呼び出し、exeの戻り値(main関数のreturnの値)の結果によってIF文で分岐させることができます。 【example.bat】 example.exe IF ERRORLEVEL==1 GOTO NORMAL IF ERRORLEVEL==0 GOTO EXCEPTION ECHO 未知の戻り値 :END_LABEL PAUSE END :NORMAL ECHO 正常終了 GOTO END_LABEL :EXCEPTION ECHO 異常終了 GORO END_PROC って感じだったと思います。 >int main() {~return 0;}で正常終了ですが べつに戻り値0だから正常ってわけではありません。 「0だったら正常とする」と決めているだけで、ナニが正常かは仕様によって決めます。 殆どの場合は無意味なんですけどね。

  • f272
  • ベストアンサー率46% (8536/18275)
回答No.1

そのcプログラムを呼びたしたプロセスが決めることです。まあ、よく見かける環境では何もしませんし、何の問題もおこしません。

関連するQ&A

専門家に質問してみよう