求助C语言问题,,,,,,,,

下面程序执行的结果?为什么会是这个结果?
int main()
{
char a[1000];
int i;
for(i = 0; i < 1000; i++)
{
a[i] = -1-i;
}
printf(“%d\n”, strlen(a));
return 0;
}
#include <stdio.h>

int main()
{
char a[1000];
int i;
for(i = 0; i < 1000; i++)
{
a[i] = -1-i;
}
printf("%d\n", strlen(a));
return 0;
}
结果是255
这是因为当i=255的时候-1-255=-256正好下溢,成为0,成为了字符串结束符号。
因此字符串长度就是255。也就是0~254个字符。255存储的是\\0

什么结果啊?没看见。字符串的截止符为\0,也就是char的值为0才认为是这个字符串的结尾。另外把一个int赋值给char时会截取数值的低8位吧。

strlen函数是计算从你传入的指针位置和往后遇到的第一个′\0′的距离,你这里给char数组赋值的时候没有给末尾加上′\0′,strlen函数访问到数组最末一个元素的时候并不会停止,而是继续在内存里面往后遍历,直到找到′\0′为止。

你的printf里面的双引号是中文的。