好的,我有以下功能:
int functionX()
{
return strcmp(array1,array2)==0;
}
为什么有人会这样做? == 0表示此函数将始终返回FALSE。这是真的还是我遗漏了一些奇特的C语法引物?
答案 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()
如果array1
和array2
比较相等,则返回“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。