-4
int a = 5, b = 7;
int N = a == b ? a : a + b == 10 ? a + b : 0;
次のコードの意味はなんですか? 更新:主に私はそれをどのような理由で利用できるのか、どのように機能するのかを知りたいですか?暗黙括弧付き"int N = a == b?a:a + b == 10?a + b:0;"の意味
int a = 5, b = 7;
int N = a == b ? a : a + b == 10 ? a + b : 0;
次のコードの意味はなんですか? 更新:主に私はそれをどのような理由で利用できるのか、どのように機能するのかを知りたいですか?暗黙括弧付き"int N = a == b?a:a + b == 10?a + b:0;"の意味
、この式は、と等価である:
int N = (a == b) ? a : ((a + b) == 10) ? (a + b) : 0;
これはN
に割り当てる:
a
の値、a
とb
が等しい場合。そうでない場合...a + b
の値は、a + b
が10の場合(つまり、N
が10に割り当てられた場合)です。そうでない場合...0
。特定の年の2月の日数を計算するときにこのコンストラクトがよく使用されています。
int febDays = (year % 4 != 0) ? 28 :
(year % 100 != 0) ? 29 :
(year % 400 != 0) ? 28 : 29;
どの部分で問題がありますか? –
[the ** ternary operator **](https://en.wikipedia.org/wiki/%3F :)の情報が参考になります。また、if-else [this ** very site **](https://stackoverflow.com/questions/1659992/if-else-vs-ternary-operator)と比較して議論されました。 – WhozCraig
これは、if文を使用した場合のようになります。http://pastebin.com/raw/LCvjaYFw –