首页 > 试题广场 >

假设以下C语言函数compare_str_len用来判断两个

[问答题]
假设以下C语言函数compare_str_len用来判断两个字符串的长度,当字符串str1的长度大于str2的长度时函数返回值为1,否则为0。
1   int compare_str_len(char*str1,char*str2)
2    {
3        return strlen(str1) - strlen(str2)>0;
4    }
已知C语言标准库函数strlen原型声明为“size_t strlen(const char*s);”,其中,size_t被定义为unsigned int类型。请问:函数compare_str_len在什么情况下返回的结果不正确?为什么?为使函数正确返回结果应如何修改代码?
当str1的长度小于str2时返回的结果不正确。
例如:str1(u) = 42,str2(u)= 10
str1 - str2 = 10 > 0
str2 - str1 = 4292467264 > 0
都是返回1 (两个无符号整数相减还是无符号整数,而无符号整数不会小于零)
改为 return strlen(str1)>strlen(str2);
发表于 2021-12-29 21:57:12 回复(0)