2016-11-30 5 views
0

が、私はCを学んでいますし、私の質問は愚かなことかもしれないが、イムconfused.In機能の「if」:if文ありえないが、その後、(成功)をmeeted場合は私の質問は、あるCのような構造

int afunction(somevariables) 
    { 
     if (someconditions) 
     { 
     do some stuff 
     return 1; 
     } 
     raise_error("error happened") 
     return 0; 
    } 

raise_errorに行くのですか?言い換えれば、raise_errorsの位置は、else文の場合と同じように動作するのか、最後に何かを返す必要があるため(return 0)、適切なelse文が必要なのでしょうか?もし条件が満たされていればpropre - この条件が満たされないならばraise_errorを呼び出します。

ありがとうございました!

+2

'raise_error'が呼び出される前に戻ります(' someconditions'がtrueの場合)。制御フローは機能を終了する。 – JAL

+0

戻り値のため、ifが満たされていればエラーに達する前にメソッドから抜け出します。それはあなたが気づくはずの行動です。しかし、明快にするために、ifに基づいてエラーを欲しい場合は、elseに入れてください。 – DejaVuSansMono

+0

の場合、someconditionsが確認された場合、関数は1を返し、関数は終了し、コードの残りの部分(raise_error)は実行されません。 – Ozeta

答えて

0

ifのステートメントが満たされない場合(成功)、それはraise_errorになりますか?

はい。 ifの条件が満たされていない場合、コントロールは存在する場合はelse分岐に渡されます。そうでない場合は、if文全体がスキップされます。

他の言葉で言えば、raise_errorsの位置は、else文のように機能しますか?この場合

、答えは「イエス」ですが、あなたのif枝が終わりreturnステートメントに起因する機能を終了した方法で構成されているという理由だけで。

最後にreturnを指定しないと、ifが完了すると、コントロールはraise_errorになります。言い換えれば

0

、はい、それはelse文にあった場合

ようraise_errors位置行為を行います。 raise_error()が処理を終了するものを行わない限り、return 0が優先的に実行されます。

基本的には、条件が満たされていない場合には、propreを作成する方法を混乱させます。この条件が満たされない場合は、raise_errorを呼び出します。

コードは問題ありません。しかし、それが理解しやすいならば、else節も使えます。

int afunction(somevariables) 
    { 
    if (someconditions) { 
     do some stuff 
     return 1; 
     } 
    else { 
     raise_error("error happened") 
     return 0; 
    } 
} 
0

あなたはその無条件のラインに入る前に、コードの出ない限り、いくつかの条件の下ではなく、コードや線が常に実行されます。 あなたのコードでは、機能的に同等です。この場合、1を返し、残りの行は実行しないので、この場合は他は必要ありません。

関連する問題