#include <stdio.h>
int main(){
int a = 3;
int b[] = {1,2};
int c = 4;
b[3] = 10;
printf("a = %d\n",a);
return 0;
}
输出: 10
也许是整数输出,它也没有携带任何垃圾值,但是当我将值分配给变量 a 为a = 5
并高于值{{1}之后},它只会按原样打印输出,告诉我这是怎么回事!
答案 0 :(得分:6)
您的代码中存在未定义的行为
b[3] = 10;
初始化数组时,您仅分配了2个项目的空间。您尝试访问第4个元素,并且该内存不属于数组,因此您得到的结果很奇怪。曾经发生过变量a
与b[3]
存储在同一位置,因此被覆盖
尝试打印sizeof
您的阵列,并检查为该阵列分配了多少内存