首先来看一道题目:
自己写一遍运行一下,发现打印了“ok”,怪怪的,str2比str1长吗?
为什么呢?
原因是,Char型数组的长度一定是>=0,所以strlen()函数的返回值是一个无符号整数,4-7=-3在无符号整数中自动转化成一个正整数,在visual studio 2012下debug会看到如下所示的结果,差值是一个429...的大数,所以结果出错:
下面,程序做一点点修改,把strlen(str2)和strlen(str1)强转成int型,int型默认为有符号数,就出现了正确的结果,如下图所示:
另外,在看一个特别的地方:
Str2数组有5个字符,但是strlen(str2)的返回值却是4,原来str[4]=’\0’,在内存中存储标志着字符串的结束,但是却不算在字符串的长度之内。