2016-09-14 18 views
-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;"の意味

+1

どの部分で問題がありますか? –

+5

[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

+1

これは、if文を使用した場合のようになります。http://pastebin.com/raw/LCvjaYFw –

答えて

0

、この式は、と等価である:

int N = (a == b) ? a : ((a + b) == 10) ? (a + b) : 0; 

これはNに割り当てる:

  1. aの値、abが等しい場合。そうでない場合...
  2. a + bの値は、a + bが10の場合(つまり、Nが10に割り当てられた場合)です。そうでない場合...
  3. 0

特定の年の2月の日数を計算するときにこのコンストラクトがよく使用されています。

int febDays = (year % 4 != 0) ? 28 : 
       (year % 100 != 0) ? 29 : 
        (year % 400 != 0) ? 28 : 29; 
関連する問題