【问题标题】:What does return z < 0 ? z + y : z mean? [duplicate]什么返回 z < 0 ? z + y : z 是什么意思? [复制]
【发布时间】:2016-07-29 17:12:58
【问题描述】:

我遇到了一种不同的返回值的方式,我很兴奋。 具体是什么意思?

如果我不得不猜测,我会说这意味着...... 如果 z

int ffunction(int x, int y)
{
    int z = x % y;
    return z < 0 ? z + y : z;
}

【问题讨论】:

  • 三元运算符,将在任何 C 语言书籍或教程中进行解释。
  • “我遇到了一种不同的返回值的方式”。这里没有“返回值的不同方式”。
  • @AnT 可能不是这里的最佳选择。我的意思是,而不是返回简单的东西,比如.. return z,这个看起来更复杂。就是这样。
  • @ricky162:是的,但是你所拥有的和return 1 + 2 之间没有根本区别。后者也比简单的return z“看起来更复杂”。

标签: c


【解决方案1】:

您正在使用 ternary operator 并返回结果。它基本上是一行中的 if 语句。它的意思是:

if(z < 0)
{
    return z + y;
}
else
{
    return z;
}

【讨论】:

  • 谢谢!这是我第一次听到这个词。
【解决方案2】:

?: 是一个三元运算符(具有三个操作数的运算符),称为条件运算符。第二个 (z + y) 或第三个操作数 (z) 的执行取决于第一个 (z &lt; 0) 是真还是假。因此,

return z < 0 ? z + y : z;

等价于

if (z < 0) {
   return z + y;
} else {
   return z;
}

【讨论】:

  • 它是一个条件运算符,但它不是“条件运算符”。它是三元运算符。
  • @Sixty4Bit,你倒退了。它是 a 三元运算符,称为 条件运算符。还有其他三元运算符(尽管不在 C 中)。请参阅链接的文档。
  • 谢谢!今天学到了一些东西。
  • fyi,三元只是意味着它有三个操作数,就像二进制意味着它有两个,一元意味着它只有一个。描述运算符的另一种方式是它们相对于其操作数的放置位置。前缀运算符出现在其操作数之前,后缀在其后,中缀出现在中间。例如加法(a+b)是中缀二元运算符,否定(-a)是前缀一元运算符,后增量(a++)是后缀一元运算符。
【解决方案3】:

您在问题中的代码与以下内容相同:

int ffunction(int x, int y)
{
    int z = x % y;
    if(z < 0){
        return (z + y);
    }

    else{
        return z;
    }
}

在您的问题中使用了三元运算符,这是一种紧凑的if 语句。

【讨论】:

    【解决方案4】:

    这是一种紧凑的if。基本上是这样说的:

    if ( z < 0 )
        return z + y;
    else
        return z;
    

    【讨论】:

      【解决方案5】:

      这意味着如果z 小于零(也称为负数)返回 z+y,如果不是这种情况(z 为零或正数)返回 z 本身。

      相当于:

      if ( z<0)
          return z+y;
      else
          return z;
      

      【讨论】:

        【解决方案6】:

        条件运算符。如果z小于0,函数返回z+y,否则返回z。

        【讨论】:

        • 三元运算符 .
        猜你喜欢
        • 2012-01-09
        • 2014-10-01
        • 2013-08-08
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多