#include <stdio.h>
int main() {
int c = c;
printf("c is %i\n", c);
return 0;
}
と呼ばれる整数変数を定義し、cその値をそれ自体に割り当てています。しかし、これはどのようにコンパイルすることができますか?cまだ初期化されていないので、その値をそれ自体にどのように割り当てることができますか?プログラムを実行すると、が表示されますc is 0。
コンパイラが変数にスペースを割り当てるアセンブリコードを生成していると想定しています(コンパイラがステートメントcに遭遇したとき)。int c次に、初期化されていないスペースにあるジャンク値を取得して、に割り当てますc。これは何が起こっているのですか?