【问题标题】:Meaning of the "int N = a == b ? a : a + b == 10 ? a + b : 0;"“int N = a == b ? a : a + b == 10 ? a + b : 0;”的含义
【发布时间】:2017-01-21 21:32:08
【问题描述】:
int a = 5, b = 7;
int N = a == b ? a : a + b == 10 ? a + b : 0;

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

【问题讨论】:

  • 您在哪一部分遇到了问题?
  • 您可能会在the ternary operator 上找到有用的信息。还与 if-else on this very site 相比进行了讨论。
  • 如果这有帮助,这就是使用 if 语句时的样子 pastebin.com/raw/LCvjaYFw
  • 这意味着任何编写代码的人都需要永远维护它(或者他们应该被取出,射击,悬挂,绘制,四等分然后修复代码,以便它可以模糊地维护)。太可恶了,只有虐待狂的导师才会写这样的代码。
  • @WhozCraig 谢谢,我得到了答案 :))

标签: c conditional-statements


【解决方案1】:

带隐式括号,这个表达式等价于:

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;

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 2021-11-28
    • 2014-03-29
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多