2011-10-26 8 views
1

if-elseステートメントは、例えば3進演算子を使用して書くことができます。if else文を書く方法

output = (val>val2) ? "Condition is true" : "Condition is false"; 

if(condition1){ 
    //do something 
}else if(condition2){ 
    //do something 
}else if(condition3){ 
    //do something 
} 

がどのように三項演算子を使用してコードの上に書くことを検討?

+2

あなたの書き方はとても良いです –

+6

あなたは本当にあなたの質問を明確にしていないという2つの異なる種類の答えを見ることができます。 – EJP

答えて

1

これを試してください。

(a?w:(b?x:(c?y:z)))

+0

これは間違いないが間違いなく読みやすい。 – Larsenal

-1
output = (condition1) ? "Condition1 is true" : ((condition2) ? 
     "Condition2 is true" : ((condition3) ? 
     "Condition3 is true" : " all Condition are false")); 
+0

彼はどのように使用するか知りたがっていますか? :複数の条件を持つフォーム。 –

0

確かに。

あなたが書こうとしているのは、if elseステートメントのような三項演算子です。

これを論理的に推論しましょう。私たちが言っている何

output = (val>val2) ? "Code here when condition is true" : "Code here when condition is false"; 

はそれだ、次の

if(val > val2) 
{ 
    //code here when condition is true; 
} 
else 
{ 
    //code here when condition is false; 
} 

です!

ハッピーコーディング! ;)

1

このように展開された形で何か:

X outputfn(...) 
{ 
    if(c1)  { return A; } 
    else if(c2) { return B; } 
    else  { return C; } 
} 

output = outputfn(...); 

output = (c1)?A:((c2)?B:C); 

しかし、そのかなり読めないに変換することができます。

だから私はそれを関数に抽出し、その関数を代わりに使うことを勧めました。

+0

本当に良い例ありがとうございました –

+0

この論理を関数に移して意味のある名前を付けることで、コードが分かりやすくなります。 – neontapir

1

私はそれを得ると思います。

output = (val>val3)?"First Case":(val>val2)?"Second Case":"Default Case"; 

次のifを式の最も右の句に置きます。最後には常にデフォルトのケースがあることに注意してください。

4

ただし、条件数が3以上になると、メンテナンスの悪夢になることがあります。

0

私はこの方法でそれをフォーマットします:

int result = condition1 ? 1 
    : condition2 ? 2 
    : condition3 ? 3 
    : -1; 

しかし、私は三項演算子を理解することが困難な場合が入れ子になった他のポスターに同意。

0

なぜですか?あなたが書いたものは完全にはっきりしており、三項演算子を使うと生成されたコードは変更されません。