C语言:关于数据在内存中的存储易错题(2)

①:输出什么?

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char a[1000];
    int i;
    for (i = 0; i < 1000; i++)
    {
        a[i] = -1 - i;
    }
    printf("%d", strlen(a));
    system("pause");
    return 0;
}


输出结果:255
分析:求长度,即寻找=‘\0’,而‘\0’的ASCII码值为0,也就是说这个题是让我们找0,这个数组a是有符号的char,而char类型表示的范围是-128~127,当数组初始化从-1,-2,...,-128,下一个不是0,而是127,126,...3,2,1,0,所以这个数组的长度为255

②:输出什么?

#include<stdio.h>
#include<stdlib.h>
int main()
{
    short num = 32767;
    short int a = num + 1;
    printf("%d\n", a);
system("pause");
return 0;
}

输出结果:-32768
分析:short 的取值范围为:-32768~32767,如果再加1,就是-32768

猜你喜欢

转载自blog.csdn.net/qq_42270373/article/details/81147260