我在面试问题中遇到了第一个问题。但是我想要对这个问题进行适当的解释。我在家里尝试这个,其他一些困惑也随之增加。
#include <stdio.h>
int main()
{
int arr[4]={10,20,30,40};
int i;
for(i=0;i<=4;i++)
printf("%d,",arr[i]);
printf("\n");
return 0;
}
OUTPUT
10,20,30,40,4,
最后一个输出是 4。但它超出了数组索引。我再次认为在内存变量中我存在于数组元素之后。所以我得到了这个答案。
但我再次对此感到困惑
#include <stdio.h>
int main()
{
char arr[4]={10,20,30,40};
int i;
for(i=0;i<=4;i++)
printf("%d,",arr[i]);
printf("\n");
return 0;
}
OUTPUT
10,20,30,40,0,
再次与下面更混淆
#include <stdio.h>
int main()
{
int arr[4]={10,20,30,40};
char i;
for(i=0;i<=4;i++)
printf("%d,",arr[i]);
printf("\n");
return 0;
}
OUTPUT
10,20,30,40,74743796,
任何人都可以解释为什么这种类型的输出变化?
我使用英特尔 CPU、Ubuntu 操作系统、Gcc 编译器..
如果特定于编译器或特定于体系结构,请在答案中提及。