【问题标题】:Ternary operator translation三元运算符翻译
【发布时间】:2016-10-13 04:56:59
【问题描述】:

这会翻译成什么(以更详细的方式)?

local.sin_addr.s_addr = (!ip_address) ? INADDR_ANY:inet_addr(ip_address);

试图理解三元运算符,但我不太明白。

【问题讨论】:

  • 这是该语言的基本结构。请参阅a beginner's text book
  • 我投票结束这个问题,因为这个问题的答案可以在任何初学者的教科书中找到。

标签: c ternary-operator


【解决方案1】:

三元组类似于if 语句,但它可以用于需要表达式的地方。所以相当于:

if (!ip_address) {
    local.sin_addr.s_addr = INADDR_ANY;
} else {
    local.sin_addr.s_addr = inet_addr(ip_address);
}

【讨论】:

    【解决方案2】:

    当您要分配给变量时使用三进制,并且您有两个选项。

    相当于:

    int a = true ? 1 : 2;
    

    是:

    int a;
    if (true) {
        a = 1;
    } else {
        a = 2;
    }
    

    了解这一点,您应该能够翻译您的代码。

    【讨论】:

    • “你有完全的选择”是什么意思?你的意思是“你有两个选择”?
    • @Barmar 哎呀,对不起,是的。我特别累。很好的收获。
    【解决方案3】:

    三元运算符是您的 if/else 语句的简写。为了解释上面的情况,它看起来像这样。

    (condition) ? (return true value) : (return false value)
    

    这可以翻译成像@Carcigenicate 答案这样的长格式声明。

    【讨论】:

      猜你喜欢
      • 2017-05-12
      • 2018-03-08
      • 2015-09-21
      • 2018-09-10
      • 2018-09-26
      相关资源
      最近更新 更多