2016-09-14 200 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

您可以在[**三元運算符**](https://en.wikipedia.org/wiki/%3F :)上找到有用的信息。還討論了與if-else相比[在**這個網站上**](https://stackoverflow.com/questions/1659992/if-else-vs-ternary-operator)。 – WhozCraig

+1

如果這有幫助,這是它看起來像是如果它使用如果語句http://pastebin.com/raw/LCvjaYFw –

回答

0

隨着隱含括號,這個表達式等效於:

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

這就賦予N

  1. a的值,如果ab是相等的。如果不是...
  2. 如果a + b是10(即N被分配10),則值爲a + b。如果沒有...
  3. 0

我最常看到這個構造在計算給定年份二月的天數時使用。

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