2013-02-18 20 views
12

私はPHPでかなり堪能んだけど、私は私が値を返さない関数の末尾にコード"return 0"は実際に何を意味していますか?

return 0; 

を見てきましたC.に手を染め始めました。関数に戻り値がない場合、値NULLが自動的に返されるため、これはPHPでは使用されません。

私は簡単な英語で、return 0は実際に何をしているのですか? PHPのように、関数呼び出しの値として引数を返しますか?それは単なる良い練習ですか?

私はこの質問が以前何度も聞かれてきたことは知っていますが、私はPHP開発者の立場から質問しています。 Googleがスローアップした回答は簡潔ではありませんでした。

+4

[値]を返さない関数の最後にあなたが 'void'機能を意味ですか? –

+0

Cについてはわかりませんが、一部の言語では、値を返さない関数では:void(as:Numberまたは:String)が必要です。 – Gustavo

+0

@Cicade申し訳ありません - はい、まさしく私の言いたいことです。 – Starkers

答えて

15

phpのように、その引数を 関数呼び出しの値として返しますか?それは単なる良い練習ですか?

はい、PHPなど多くの言語が「C」のreturnキーワードを借りていました。すべての言語で、returnキーワードは同じ機能を持ちます。つまり、関数から戻ることができます。 returnキーワードに続くものは、呼び出し元に返される値です。

いいですか?はいといいえ。すべての関数ではないは値を返す必要があります。標準ライブラリのかなりの部分でさえ、値を返さないでください。その戻り値の型はvoidです。

しかし、0(またEXIT_SUCCESS)関数は、プログラムが正常に実行されたことを識別するために返す必要があります。そして、そうでなければ-1(もEXIT_FAILURE

EDIT:(@KeithThompsonのおかげで):

EXIT_FAILUREが定義された実装です。 1EXIT_FAILUREの共通の値ですが、全体的な点はわかりません。歴史的な理由から

+1

ああ、そうだ。素晴らしい答え。私はそれが簡単な質問だと知っていますが、私は自分の頭の中で100%すべてをプロジェクトに投げ込む前に明確にしたいのです! – Starkers

+0

@JWHそれは素晴らしいです。 –

+1

'EXIT_FAILURE'の値は実装定義です。 *通常は '-1'ではありません。 '1'がより一般的です。しかし、重要なのは、あなたが「価値観が何であるか」を気にする必要がないことです。 –

5

他の戻り値の型が定義されていない場合、それは文字通り、デフォルトではCのリターンint型で0

6

機能のint型を返します。戻り値0は、呼び出し側が戻り値を調べている場合に、関数が既知の値を返すようにするための良い方法です。

+6

これはANSI Cであり、現代C(C99以降)は推論された型を阻止するか否定することに注意してください。 –

+0

これはc89のみの場合です –

+0

値を返さないと宣言された関数の戻り値を検査するように人々に促すのは本当に良い方法ですか? – aroth

8

、そのようにvoidとして宣言された関数から返すようにreturn 0;を書き込むことができる:

void foo(/* arguments */) 
{ 
    /* do things */ 
    return 0; 
} 

これは何もしない、と0(またはものは何でもあなたがそこに置きます)捨てられるまた、感知できるコンパイラは、これを行うと警告メッセージを表示します。そうしないでください。

1

Cプログラミング言語を使用すると、整数を返すか、EXIT_SUCCESSEXIT_FAILUREマクロを返すことによって、メイン関数から出たり戻ったりするプログラムが成功または失敗を通知できます。 Unixでは、これらはそれぞれ0と1に等しい。 Cプログラムは、整数ステータスを指定する関数、またはマクロを最初のパラメータとして終了する関数を使用することもできます。

マクロEXIT_SUCCESSおよびEXIT_FAILUREとは別に、C標準ではリターンコードの意味を定義していません。戻りコードの使用規則は、プラットフォームによって異なります。

0

Cでは、開始時にvoidを指定して関数を宣言した場合にのみ、値を返す必要はありません。 まず例:

#include <stdio.h> 
int main() 
{ 
    printf("Hello World!"); 
    return 0; // you have to use return because main starting with int 
} 

第2の例:

#include <stdio.h> 
void main() 
{ 
printf("Hello World!"); 
//in this case return is useless, main is a void function 

} 
関連する問題