函数的返回值== 0?

时间:2011-12-23 15:20:32

标签: c function strcmp

好的,我有以下功能:

int functionX()
{
  return strcmp(array1,array2)==0;
}

为什么有人会这样做? == 0表示此函数将始终返回FALSE。这是真的还是我遗漏了一些奇特的C语法引物?

6 个答案:

答案 0 :(得分:1)

(strcmp(array1, array2) == 0)是一个评估strcmp()的表达式,它可以返回负数,正数或零数。当两个字符串相同时,strcmp()会返回0

== 0正在将strcmp()的返回值与0进行比较。您可以在需要functionX()的实例中使用此选项,以便在两个字符串相同时返回“true”(非零)值。具体而言,在这种情况下,strcmp(array1,array2)==0将返回1,否则将返回0

有关strcmp()的详细信息,请查看其man page

答案 1 :(得分:1)

strcmp()如果两个参数比较相等,则返回0。在您的示例中,functionX()如果array1array2比较相等,则返回“true”。

答案 2 :(得分:1)

strcmp()返回一个整数,如果两个字符串相等则为0,否则为非零。

该函数只是“反转”结果,如果结果为0则返回1,如果结果为非零则返回0。在C中,任何非0的东西都被认为是“真”,因为没有真正的布尔类型(除了C99)。

答案 3 :(得分:1)

这里没有异国情调......你要返回表达式strcmp(array1, array2)==0的结果,它将strcmp的结果与0进行比较,如果它们相等则返回1,如果它们不同则返回0。

总而言之,如果functionX的结果为0(即如果两个比较的字符串相等),则strcmp将返回1,否则为0。

答案 4 :(得分:0)

此构造将strcmp的结果与0进行比较,并返回比较结果

答案 5 :(得分:0)

与零比较与否定布尔表达式相同,就像在C中使用整数作为布尔值一样。所以

return strcmp(array1,array2)==0;

相同
return !strcmp(array1,array2) ;

如果两个字符串相等,strcmp只返回零,那么如果字符串相等,表达式将返回true。