【问题标题】:What does "return x == y" mean? [duplicate]“返回 x == y”是什么意思? [复制]
【发布时间】:2019-12-23 21:51:25
【问题描述】:

是什么

return x == y;

是什么意思?

【问题讨论】:

  • 就像一个 if 语句。所以它返回真或假。

标签: c operators operator-keyword equality-operator


【解决方案1】:

表达式x == y 产生一个整数值,或者0(当x 不等于y)或1(当x 等于y)。

【讨论】:

    【解决方案2】:

    == 比较两个变量的值。比较结果为真或假,所以如果xy 相等,则结果为真,否则结果为假。

    return 语句从函数返回此结果。

    在 C 中,0 表示 false,其他数字(正数和负数)表示 true。所以函数返回一个 0 或一个 1

    【讨论】:

    • @dedecos,它们不是保留字。
    • @dedecos,表达式产生一个语义逻辑值 true 或 false,在 C 中分别实现为非零和零。请注意,例如在 VB 中,它们分别实现为 0 和 -1。
    【解决方案3】:

    做什么

    return x == y;
    

    是什么意思?

    1. xy 之间进行逻辑比较,结果为int 持有10,这取决于xy 是否相等。

    2. 结束函数并按照1..返回结果

    【讨论】:

      【解决方案4】:

      首先,让我让你明白x == y是什么意思。

      x == y 比较 xy。如果xy 相等,x == y 的结果将为true,否则为false

      在 C 中,true 等价于任何非零值(默认为 1),false 等价于零。

      所以,如果x 等于y,则x == y 等于1。否则为0。

      最后,return x == y 表示如果xy 相等,则函数返回的值为1,否则为0

      考虑函数,

      int isEqual(int x, int y) {
          return x == y;
      }
      
      int main() {
          printf("%d", isEqual(1, 1)); // 1
          printf("%d", isEqual(1, 2)); // 0
          return 0;
      }
      

      【讨论】:

      • 在C中,true和false不是保留字或值,所以不要写成truefalse
      • 我只是解释一下。我从来没有说过它们是保留字。
      • 那就好好解释吧。
      • 这是(迄今为止)唯一一个表明true任何非零值的答案,所有其他答案都表明它是1。是的,1 是一个常见的编译器/架构选择,但我很惊讶唯一的“正确”答案(你的)在使用布尔逻辑(标准核心)时被不包括 stdbool.h 的人否决定义了booltruefalse 的标头!
      【解决方案5】:

      这会给你一个布尔值(或布尔值)。如果 x 等于 y,则返回 true,否则返回 false。这在大多数使用 == 运算符的编程语言中都是一样的。

      【讨论】:

        【解决方案6】:

        根据 C 标准(6.5.9 等式运算符)

        3 ==(等于)和!=(不等于)运算符类似于 关系运算符,但优先级较低。108) 每个 如果指定的关系为真,则运算符的数量为 1,如果指定的关系为真,则为 0 这是错误的。结果的类型为 int。对于任何一对操作数, 正是其中一个关系为真。

        所以在这个返回语句中

        return x == y;
        

        使用了一个带有相等运算符== 的表达式。表达式的值是10,取决于x 是否等于y。所以 return 语句返回 10

        你可以像这样重写 return 语句

        int result = ( x == y );
        return result;
        

        例如,考虑一个 if 语句,其中比较两个字符串的条件

        if ( strcmp( s1, s2 ) == 0 )
        {
            puts( "The strings are equal each other." );
        }
        //...
        

        你可以编写一个看起来像这样的单独函数

        int equal( const char *s1, const char *s2 )
        {
            return strcmp( s1, s2 ) == 0;
        }
        

        在这种情况下,if 语句看起来像

        if ( equal( s1, s2 ) )
        {
            puts( "The strings are equal each other." );
        }
        //...
        

        【讨论】:

          猜你喜欢
          • 2016-07-18
          • 1970-01-01
          • 2014-11-06
          • 2012-01-09
          • 1970-01-01
          • 2014-10-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-01
          相关资源
          最近更新 更多