C中strcmp源代码这句是什么意思

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:22:53
这是LINUX C中的源代码

strcmp (p1, p2)
const char *p1;
const char *p2;
{
register const unsigned char *s1 = (const unsigned char *) p1;
register const unsigned char *s2 = (const unsigned char *) p2;
unsigned reg_char c1, c2;

do
{
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0')
return c1 - c2;
}
while (c1 == c2);

return c1 - c2;
}

其中这句
if (c1 == '\0')
return c1 - c2;
怎么理解如果c1='\0'了,那么它的ASCII码是多少啊(返回的应该是两个字符的ASCII码值差吧)

'\0'的ASCII是0
返回的就是差值

'\0'代表ASCLL码为0的字符,是NULL,它目的是判断字符串是否结束,c语言规定'\0'代表字符串结束标志。
是两个字符的ASCLL码值差,正数,说明1>2,负数说明1<2,0说明相等
a-b=-1<0 a小于b