在《C语言深度剖析》一书中看到下面这个问题,正好趁此机会,把这个数据类型的长度问题理清一下。下面的这段程序会输出什么值?
#include<stdio.h>
int main(){
char a[1000];
int i;
for(i = 0; i < 1000; i++){
a[i] = -1 - i;
}
printf("strlen(a) = %d\n",strlen(a));
return 0;
}
刚看到这个问题的时候,云里雾里的,这是什么鬼,一般想到的就是1000了。但是其实输出之后是255。
要弄清这个问题,有两个点:1、strlen函数计算长度时是怎么算的?2、char型数据的值得大小范围。
对于第一个问题,这里先提一点,很多时候我们不是太清楚sizeof和strlen的区别,记住一点:sizeof是关键字,不是函数;而strlen是函数。在strlen计算一个字符串的长度的时候,它遇到字符串结束符“\0”时就结束了,并且这结束符不会计算在长度里面。那么上面怎么到256的时候就结束了呢?
下面说明第二个问题,不管是在32位还是64位的机器&