は、誰かが関数の最後にその「リターン」であるものを私にexlainすることができますし、我々が持っている理由の主関数の戻り0.egの最後に書くこと関数 "return"の最後に何を書いていますか? C++では
int main()
{
.....
return 0;
}
は、誰かが関数の最後にその「リターン」であるものを私にexlainすることができますし、我々が持っている理由の主関数の戻り0.egの最後に書くこと関数 "return"の最後に何を書いていますか? C++では
int main()
{
.....
return 0;
}
をしませんあなたをC++でmain
の末尾にreturn
と書かなければなりません。戻り値は0
です。
これは、プログラムが成功したか(ゼロ)、何らかのエラーが発生したかどうかを知ることができるように、プログラム環境に値を返します。 (非ゼロ)。シェルスクリプト/バッチファイルを含む他のプログラムは、この情報を使用して決定を下すことができます。実行しているプログラムでエラーが発生すると、早期に停止することができます。
関数呼び出しをサポートするすべてのCPUは、呼び出された関数の内部から関数を呼び出したコードに明示的に戻るために、RET
のような命令を持っています。関数呼び出しの後に戻るコードのメモリアドレスは、「よく知っている場所」(例えばスタック)に既に保存されています。 RET
命令は、元の関数呼び出しの後に来るコードで実行を再開するために、そのメモリアドレスを取り出し、CPUを正しい場所に向けます。
C++では、特定の値を返すように宣言されている関数(上記の関数mainのように)がありますが、他の関数は決して返されません(戻り値の型がvoidと宣言されています)。あなたが書いた関数をどのように宣言するかはあなたの選択です。関数の戻り値の型がvoidの場合、ではないは、の明示的なreturn文が必要です。 if、elseまたはloopの内部からのように早めに返っていない限り。例えば:あなたの関数は、(例えば、int型用)void以外の戻り値の型を持つように宣言されている場合
void foo(int x) {
if (x == 0)
return; // premature return to caller
int b = x*2;
// do some more stuff
// and now no need to say return, its done implicitly because we are at function end
}
しかし、その後、あなたが戻ってないていても、関数内の明示的なreturn文を持つべきです時期尚早。
int bar(int y) {
return y*7;
}
呼び出し側はそれを期待しているし、このような変数に戻り値を割り当てることもできるので:
int z = bar(4);
あなたは正しい関数から何かを要求していますか?だから、あなたは 'return'を持つ必要があります。関数から何も期待していない場合は、単に 'void main(){.... //リターンコールを必要としない}'と宣言してください。 –
@ sh4nx0r:いいえ、*は無効です*。 'main'は' int'を返さなければなりません。そして、いずれにしても、「メイン」はあなたが本当に何も返す必要がないという点で特別です。 –