-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 –