12

2つの質問があります-(I)

code-fragment-1

if(<condition-statement>){
}

else if(<condition-statement-2>){
    //statements-1
}
//statements-2

コードフラグメント-2

if(<condition-statement>){
}

else{
    if(<condition-statement-2>){
        //statements-1
    }
    //statements-2
}

上記の2つのコードフラグメントは同じですか?

(II)else ifs(C ++の場合)はいつ使用されますか?

4

4 に答える 4

15

唯一の違いは、例1では、チェックする条件に関係なく、Statement2が実行されることです。例2では、​​Statement2は、if条件がfalseの場合にのみ実行されます。それ以外は基本的に同じです。

于 2012-10-06T07:19:20.117 に答える
10

いいえ、最初のケースでは、が検証されていない場合、および<condition-statement> 検証されている場合にのみ 、elseブロックを実行します。<condition-statement-2>

2番目のケースでは、が検証されていない<codition-statement>場合にのみelseブロックを実行します。

この場合、//ステートメントがなくなるまでは同等です-2。

質問について:(c ++で)else ifが使用されるのはいつですか?

基本的に、この構成を持つ他のすべての言語と同じ条件下で使用されます。 elseは、関連するifの代替として実行されますが、代替として実行されますが、検証のためにelse-if「添付」が付いています。それ以外の場合は実行されません。ifしたがって、それらは論理的に同等ではありません。

于 2012-10-06T07:19:29.733 に答える
3

の構文ifは本当に

if(condition) statement;

実際に行うことは、{}複数のステートメントをグループ化できるようにすることです。2番目の例では、s内にステートメント(if)が1つしかない{}ため、両方の例は同じですが、// statement-2は常に!=trueの場合に実行されます。

于 2012-10-06T07:20:58.953 に答える
1

最初のコードサンプルでは、​​ステートメント2が無条件に実行されます。第二に、それは条件付きです。同じではありません。

'else if'が一般的に好まれます。これは、それらを無期限に挿入または追加し続けるか、'else'を追加できるためです。一方、他の形式では、同じ効果を得るには、中かっこを際限なくいじる必要があります。 2番目のサンプルで実際に行ったように、セマンティクスを変更するリスクがあります。

于 2012-10-06T07:42:15.143 に答える