" int的含义N = a == b? a:a + b == 10? a + b:0;"

时间:2016-09-14 07:01:31

标签: c conditional-statements

int a = 5, b = 7;
int N = a == b ? a : a + b == 10 ? a + b : 0;

以下代码的含义是什么? 更新:主要是我想知道我可以使用它的原因以及它是如何工作的?

1 个答案:

答案 0 :(得分:0)

使用隐式括号,此表达式等效于:

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

这将分配给N

  1. 如果aa相等,b的值。如果不是......
  2. a + b的值,如果a + b为10(即N,则为10)。如果不是......
  3. 0
  4. 我经常看到这个结构在计算给定年份2月份的天数时使用。

    int febDays = (year % 4 != 0) ? 28 : 
                    (year % 100 != 0) ? 29 : 
                      (year % 400 != 0) ? 28 : 29;