“返回 x == y”是啥意思? [复制]
Posted
技术标签:
【中文标题】“返回 x == y”是啥意思? [复制]【英文标题】:What does "return x == y" mean? [duplicate]“返回 x == y”是什么意思? [复制] 【发布时间】:2019-12-23 21:51:25 【问题描述】:是什么
return x == y;
是什么意思?
【问题讨论】:
就像一个 if 语句。所以它返回真或假。 【参考方案1】:表达式x == y
产生一个整数值,或者0
(当x
不等于y
)或1
(当x
等于y
)。
【讨论】:
【参考方案2】:==
比较两个变量的值。比较结果为真或假,所以如果x
和y
相等,则结果为真,否则结果为假。
return
语句从函数返回此结果。
在 C 中,0 表示 false,其他数字(正数和负数)表示 true。所以函数返回一个 0 或一个 1
【讨论】:
@dedecos,它们不是保留字。 @dedecos,表达式产生一个语义逻辑值 true 或 false,在 C 中分别实现为非零和零。请注意,例如在 VB 中,它们分别实现为 0 和 -1。【参考方案3】:做什么
return x == y;
是什么意思?
在x
和y
之间进行逻辑比较,结果为int
持有1
或0
,这取决于x
和y
是否相等。
结束函数并按照1..返回结果
【讨论】:
【参考方案4】:首先,让我让你明白x == y
是什么意思。
x == y
比较 x
和 y
。如果x
和y
相等,x == y
的结果将为true
,否则为false
。
在 C 中,true
等价于任何非零值(默认为 1),false
等价于零。
所以,如果x
等于y
,则x == y
等于1。否则为0。
最后,return x == y
表示如果x
和y
相等,则函数返回的值为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不是保留字或值,所以不要写成true
和false
。
我只是解释一下。我从来没有说过它们是保留字。
那就好好解释吧。
这是(迄今为止)唯一一个表明true
是任何非零值的答案,所有其他答案都表明它是1
。是的,1
是一个常见的编译器/架构选择,但我很惊讶唯一的“正确”答案(你的)在使用布尔逻辑(标准核心)时被不包括 stdbool.h 的人否决定义了bool
、true
和false
的标头!【参考方案5】:
这会给你一个布尔值(或布尔值)。如果 x 等于 y,则返回 true,否则返回 false。这在大多数使用 == 运算符的编程语言中都是一样的。
【讨论】:
【参考方案6】:根据 C 标准(6.5.9 等式运算符)
3 ==(等于)和!=(不等于)运算符类似于 关系运算符,但优先级较低。108) 每个 如果指定的关系为真,则运算符的数量为 1,如果指定的关系为真,则为 0 这是错误的。结果的类型为 int。对于任何一对操作数, 正是其中一个关系为真。
所以在这个返回语句中
return x == y;
使用了一个带有相等运算符==
的表达式。表达式的值是1
或0
,取决于x
是否等于y
。所以 return 语句返回 1
或 0
。
你可以像这样重写 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." );
//...
【讨论】:
以上是关于“返回 x == y”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章