关于网友提出的“ 小菜一枚,就教育”问题疑问,本网通过在网上对“ 小菜一枚,就教育”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 小菜一枚,就教育描述:
本帖最后由 zy799894671 于 2012-05-18 13:00:45 编辑
#include "string.h"数组a里的值不是-1到-1000我能理解,但为什么strlen(a)不等于1000,而是等于255呢???是什么时候在数组里加上了一个'\0'的呢???求高人解释~~~~~~
#include "stdio.h"
int main()
{
char a[1000];
for(i = 0;i < 1000;i++)
{
a[i] = -1-i;
}
printf("strlen(a) = %d\n",strlen(a));
}
解决方案1:
#include
#include
int main()
{
char a[1000];
for(i = 0;i < 1000;i++)
{
a[i] = -1-i;
}
printf("strlen(a) = %d\n",strlen(a));
}
i=0时,a[i]=0xff。i=254时,a[i]=0x01。i=255时,a[i]=0x00——就是它,-256==>0xffffff00,截断成一字节后就是0。 解决方案2:
a[i] = -1-i
a[255] = -1-255=-256=0
既然你能理解数组里的值不是-1到-1000,那你还奇怪什么?
char字符最大到255,楼主算一下什么时候会加到0,肯定不是1000吧