eg.
strlen()返回size_t无符号整数
strlen(arr[i]) > (int) n
因为strlen(arr[i])返回的是size_t类型,可以看作是unsigned int类型,
根据类型自动转换规则,在int与unsigned int进行比较时,
int首先会转换为unsigned int,
因此strlen(arr[i])转换为4294967295,导致比较错误。
故应该用一个中间值n=strlen(arr[i]),再进行比较如下:
for (int i = 0; i < num; i++)
{
cout << strlen(arr[i])<<" " << i<<" "<<m1 << endl;
int n = strlen(arr[i]);
if (n > m1)
{
cout << i << endl;
m1 = strlen(arr[i]);
m = arr[i];
}
}