2016-11-19 9 views
1

"return o"を使わないとどうなるか見てみたところです。だから、プログラムの最後に "return 0"を使わないたびに、 "return 0"を使わないと "Process returned 18(0 * 12)"と表示されていました。「return 0」を使用しないと「Process returned 18(0 * 12)」と表示されるのはなぜですか?

なぜですか?

ありがとうございます。

+1

この動作を示す最小限の完全なプログラムと、実行方法に関する詳細を投稿できますか? (これは他の読者にとって質問をより便利にするでしょう) – ruakh

+0

それを探して、それは1ヶ月前です、ちょうど覚えていました。 – Felix

+2

あなたが知っているように、 'main()'は成功のために値0を返さなければなりません。明示的に値を返さないと、システムが戻り値として使用するレジスタまたはメモリの場所にあった値に基づいて、ランダムなガベージ・リターン値の効果が得られます。しかし状況によっては、 "ランダムなゴミ"値が常に同じであることが一般的です。あなたの場合、それは18のように見えます。(私は "* 0 * 12"とは何なのか分かりません) –

答えて

4

void以外の関数からreturnステートメントを省略すると、未定義の動作が呼び出されます。 何でもが起こる可能性があります。

+0

はい、そうですが、具体的には "Process returned 18(0 * 12)" .. – Felix

+0

が表示され、テストケース番号を使用/入力すると、戻り値の型はテストケース番号(省略時)を示しています。 – Felix

+1

@Felix:あなたが未定義の領域に入ったときに何が起こるのか把握しようとするのは非常に生産的ではありません。何らかの答えが見つかった場合(この場合は、レジスタやスタックに存在し、戻り値として使用される他のデータの可能性が最も高い)、あらゆる種類の要素に敏感で、頼りになるものはありません。 – Thilo

関連する問題