例如:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
const char* a = " ";
for(int i = 0; i < strlen(a) - 2; i++) {
printf("i= %d, \t strlen(a) - 2= %d\n", i, strlen(a) - 2);
}
}
这段代码运行时会不停打印很长时间,最后停下来
其主要原因是strlen的返回值是一个unsigned类型,减去2之后仍然会上升到一个unsigned类型,是一个超大的正整数,因此应该将strlen(a)强制转换为int类型
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
const char* a = " ";
int len = strlen(a);
for(int i = 0; i < len - 2; i++) {
printf("i= %d, \t strlen(a) - 2= %d\n", i, strlen(a) - 2);
}
}
这段代码才可以正常结束!