关于strcmp( )的问题
下面的代码,为什么用strcmp( )比较字符串“break”和“if”,输出的是负数而不是整数?#include<stdio.h>
#include<string.h>
int main()
{
int a,b;
static char s[]={"while","for","switch","if","break","continue"};
a = strcmp(s,s);
b = strcmp(s,s);
printf("%d , %d",a,b);
return 0;
}
break 和 if 比 ,'b' ASCII码是66 ,'i' ASCII码是73。 66<73。所以 if > break。strcmp("break","if ")返回-1 参考资料如下:
strcmp函数用于两个字符串的比较:
1、strcmp函数接受两个字符串类型的参数传入,根据比较结果返回一个int类型的值。
2、若返回结果的值小于 0,则表示在ASCII码上, str1字符串 小于 str2字符串。
3、若返回结果返回值 大于0,则代表 str2字符串 小于 str1字符串。
4、只有当返回值 为0时,两个字符串才是相同的。
该函数只能用于比较字符串,不能比较数字等其他形式的参数,否则会报错。
根据ANSI的标准,函数的返回值为正数,负数,0 。不同的C返回的数值会有所不同。当两个字符串不相等时,C的标准没有规定返回值会是 1 或 -1,只规定了正数和负数。
通常情况下,会将两个字符的 ASCII 码之差作为比较结果由函数值返回。因此使用函数进行逻辑判断时应特别注意。 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
页:
[1]