好了,我有以下功能:函数== 0的返回值?
int functionX()
{
return strcmp(array1,array2)==0;
}
为什么会有人这样做? == 0会暗示此函数将始终返回FALSE。这是真的还是我错过了一些奇特的C语法引擎?
好了,我有以下功能:函数== 0的返回值?
int functionX()
{
return strcmp(array1,array2)==0;
}
为什么会有人这样做? == 0会暗示此函数将始终返回FALSE。这是真的还是我错过了一些奇特的C语法引擎?
该构建体进行比较的strcmp
与0的结果,并返回的比较
(strcmp(array1, array2) == 0)
结果是评估strcmp()
,其可以返回一个负,正,或零数的表达式。当两个字符串相同时,strcmp()
返回0
。
== 0
正在比较strcmp()
与0
的返回值。在两个字符串相同的情况下,如果需要functionX()
以返回“true”(非零)值,则可以使用此值。具体而言,strcmp(array1,array2)==0
将在这种情况下返回1
,否则返回0
。
有关strcmp()
的更多信息,请查看其man page。
strcmp()
如果两个参数比较相等,则返回0。在你的例子中,functionX()
返回“true”iff array1
和array2
比较相等。
strcmp()
返回一个整数,如果两个字符串是等价的,则为0,否则为非零。
该函数只是“反转”结果,意思是说,如果结果为0,则返回1,如果结果为非零,则返回0。在C中,任何不是0的东西都被认为是“真的”,因为没有真正的布尔类型(除了C99)。
@OliCharlesworth固定 – fge 2011-12-23 15:35:38
这里没有任何异国情调......您将返回表达式strcmp(array1, array2)==0
的结果,它将strcmp
的结果与0进行比较,如果它们相等则返回1,如果它们不同则返回0。
总而言之,如果strcmp
的结果为0(即,如果两个比较的字符串相等),则functionX
将返回1,否则为0。
与零相比,与否定布尔表达式相同,因为在C中使用整数作为布尔值。所以
return strcmp(array1,array2)==0;
比
return !strcmp(array1,array2) ;
一样的STRCMP只返回零,如果两个字符串相等,那么如果字符串相等,则表达式将返回true。
问题是什么? 如果strcmp返回0,则表示字符串相等。 否则,根据结果的符号(负值或正值结果),另一个值大于另一值。 – Rolice 2011-12-23 15:23:51
您返回评估结果“strcmp(array1,array2)== 0”。如果strcmp(array1,array2)确实等于0,那么您将返回true,否则返回false。它不比“return 1 == 1”更具异国情调,除了该例子显然总是返回true。 – 2011-12-23 15:26:05