好的,所以我有以下功能:
int functionX()
{
return strcmp(array1,array2)==0;
}
为什么会有人这样做?==0 表示此函数将始终返回 FALSE。这是真的还是我错过了一些奇特的 C 语法引物?
(strcmp(array1, array2) == 0)是一个计算 的表达式strcmp(),它可以返回一个负数、正数或零数。当两个字符串相同时,strcmp()返回0。
== 0strcmp()正在比较with的返回值0。当两个字符串相同时,您可以在需要functionX()返回“真”(非零)值的情况下使用它。具体来说,strcmp(array1,array2)==0将1在这种情况下返回,0否则。
有关更多信息strcmp(),请查看其手册页。
strcmp()如果它的两个参数比较相等,则返回 0。在您的示例中,functionX()返回“true” iffarray1并array2比较相等。
strcmp()返回一个整数,如果两个字符串相等则为 0,否则为非零。
此函数只是“反转”结果,如果结果为 0,它将返回 1,如果结果不为零,则返回 0。在 C 中,任何非 0 都被认为是“真”,因为没有真正的布尔类型(C99 除外)。
这里没有什么奇特的......你正在返回表达式的结果strcmp(array1, array2)==0,它将结果strcmp与 0 进行比较,如果它们比较相等则返回 1,如果它们不同则返回 0。
总而言之,functionX如果 的结果strcmp为 0(即如果两个比较的字符串相等)则返回 1,否则返回 0。
与零比较与否定布尔表达式相同,因为在 C 中使用整数作为布尔值。所以
return strcmp(array1,array2)==0;
是一样的
return !strcmp(array1,array2) ;
由于 strcmp 仅在两个字符串相等时才返回零,因此如果字符串相等,则表达式将返回 true。
此构造将 的结果strcmp与 0 进行比较并返回比较的结果