-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
是10(即N
被分配10),則值爲a + b
。如果沒有...0
。我最常看到這個構造在計算給定年份二月的天數時使用。
int febDays = (year % 4 != 0) ? 28 :
(year % 100 != 0) ? 29 :
(year % 400 != 0) ? 28 : 29;
哪個部位有問題? –
您可以在[**三元運算符**](https://en.wikipedia.org/wiki/%3F :)上找到有用的信息。還討論了與if-else相比[在**這個網站上**](https://stackoverflow.com/questions/1659992/if-else-vs-ternary-operator)。 – WhozCraig
如果這有幫助,這是它看起來像是如果它使用如果語句http://pastebin.com/raw/LCvjaYFw –