面接の質問で最初の問題を出しましたが、質問に対する適切な説明が必要です。自宅でこれを試してみると、他のいくつかの混乱も生じています。
#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,
このタイプの出力の変動の理由を説明できる機関はありますか?
Intel CPU、Ubuntu OS、Gcc コンパイラを使用しています。
コンパイラ固有またはアーキテクチャ固有の場合は、回答にも記載してください。