strlen函数的返回类型
strlen的返回类型是size_t类型的,是无符号的(unsigned),下面是一段容易产生错误的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "abcdef";
char arr2[] = "abc";
if (strlen(arr2) - strlen(arr1) > 0)
{
printf("arr2 > arr1");
}
else
{
printf("arr2 <= arr1");
}
return 0;
}
很多人以为strlen(arr1) = 6,strlen(arr2) = 3,那么strlen(arr2) - strlen(arr1) = -3 < 0,应该打印:“arr2 <= arr1”,但实际上却是:

这是因为strlen(arr2) - strlen(arr1)仍是一个size_t类型的值,是无符号的(>0),所以打印了arr2 > arr1;
完
774

被折叠的 条评论
为什么被折叠?



