これは、このJeffAtwoodの記事で述べられているFizzBuzzの問題の説明です。
1から100までの数字を印刷するプログラムを作成します。ただし、3の倍数の場合は数字の代わりに「Fizz」を印刷し、5の倍数の場合は「Buzz」を印刷します。3と5の両方の倍数である数の場合は、「FizzBuzz」を印刷します。
三項演算子は、if-elseステートメントの省略形です。一般的な形式は次のとおりです。
cond?Evaluation_if_cond_is_true:evaluate_if_cond_is_false
だから私が書くなら:
int isEven = (i % 2 == 0) ? 1 : 0;
次のコードと同等です。
if (i % 2 == 0) {
isEven = 1;
} else {
isEven = 0;
}
condがi % 2 == 0
の場合、evaluate_if_cond_is_trueはで1
あり、evaluate_if_cond_is_falseはです0
。
三項演算子の良いところは、それらを組み合わせることができることです。これは、いずれかの条件がtrueまたはfalseと評価されたときに実行するステートメントが、別の3項演算子になる可能性があることを意味します。
条件全体をより読みやすい方法で配置しましょう。
i%3==0 ?
i%5==0 ?
"FizzBuzz"
: "Buzz"
: i%5==0 ?
"Fizz"
: i
そして、これをif-elseステートメントにマッピングするのは、上記で説明したルールを使用すると簡単です。
if (i%3==0) {
if (i%5==0) {
"FizzBuzz"
} else {
"Buzz"
}
} else {
if (i%5==0) {
"Fizz"
} else {
i
}
}
これは有効なコードではありませんが、三項演算子の結果が結果式にインライン化されるため、putsコマンドの入力として使用されます。