请问各位,这要怎么分析

//下面代码的结果是( )
int main()
{
  char a[1000] = {0};
  int i=0;
  for(i=0; i<1000; i++)
  {
    a[i] = -1-i;
  }
  printf("%d",strlen(a));
  return 0;
}

输出255,因为-256就是0


//下面代码的结果是( 255)
#include <stdio.h>
#include <string.h>
int main()
{
  char a[1000] = {0};//a[0]=0
  int i=0;
  for(i=0; i<1000; i++)
  {
    a[i] = -1-i;//a[0]=-1 a[1]=-2 a[2]=-3...a[255]=-256...
  }
  printf("%d",strlen(a));//统计数组a的长度为255
  return 0;
}

255,有符号char的范围-128~127,无符号char的范围0~255