[解決済み] なぜmainはここで0を返さないのですか?
2022-05-16 13:09:20
質問
私はちょうど本を読んでいました。
ISO/IEC 9899:201x 委員会草案 - 2011年4月12日
で、5.1.2.2.3 プログラム終了のところにありました。
..reaching the } that terminates the main function returns a value of 0.
でreturn文を指定しない場合という意味です。
main()
でreturn文を指定せず、プログラムが正常に実行されれば、mainの閉じ中括弧 }のところで0を返すということです。
しかし、次のコードでは、returnステートメントを指定していないのに、0が返されません。
#include<stdio.h>
int sum(int a,int b)
{
return (a + b);
}
int main()
{
int a=10;
int b=5;
int ans;
ans=sum(a,b);
printf("sum is %d",ans);
}
コンパイル
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
どのように解決するのですか?
そのルールは1999年版のC規格で追加されました。 C90 では、返されるステータスは未定義です。
を渡すことで有効にすることができます。
-std=c99
をgccに渡すことで有効になります。
余談ですが、面白いことに9が返されるのは、その返しが
printf
の戻り値だからです。
関連
-
[解決済み] ソケットアクセプト - "開かれているファイルが多すぎる"
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] JavaScriptで複数の値を返す?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
[C] Error [Error] 代入の左オペランドとして lvalue が必要です。
-
未定義の `__isoc99_sscanf' への参照
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] CコードでEOFを表現する?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?