【问题标题】:What is the meaning of this syntax, relating to c++ [duplicate]这个语法的含义是什么,与c ++有关[重复]
【发布时间】:2013-06-18 17:18:28
【问题描述】:
return int_length(len > 0 ? len : 1)

括号中的语法是什么意思,我读这段代码的时候一直很困惑。 谢谢

【问题讨论】:

  • 三元运算符:ternary wiki - 一个非常简洁的 if-else。
  • 为什么连续投反对票?
  • @Daniel,显然有人认为回答重复问题值得反对。 (提示:通常不会。)
  • @DanielDaranas 我是。我猜它是一些正则表达式。
  • 我不是反对者,但正确的术语是“条件运算符”。见stackoverflow.com/questions/3257229/… :)

标签: c++ conditional-operator


【解决方案1】:

它是一个三元运算符。如果len>0 为真,则表达式的结果为len,否则为1

if(len > 0) 它将返回int_length(len);

否则它将返回int_length(1);

【讨论】:

    【解决方案2】:

    这就是三元运算符。

    相当于

    if (len>0)
        return int_length(len);
    else
        return int_length(1);
    

    【讨论】:

    • 为什么是-1?点赞。
    • 为什么所有正确答案都是-1? wtf..
    • 因为严格来说它们并不正确。在这种情况下,答案给出了与完整陈述等效的内容;发帖人询问了作为int_length 参数的实际表达。 (并不是说我认为这是投反对票的正当理由,但这是我能想到的唯一批评。)
    【解决方案3】:

    意思是

    if(len > 0)
    {
       return int_length(len);
    }
    else
    {  
       return int_length(1);
    } 
    

    【讨论】:

    • 除了可读性高一个数量级。
    【解决方案4】:

    即三元条件运算符。它是一个“内联 if”。

    基本上就是这样

    int temp;
    if (len > 0)
    {
      temp = len;
    }
    else
    {
      temp = 1;
    }
    
    int_length(temp);
    

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 2022-07-07
      相关资源
      最近更新 更多