#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
。これは何が起こっているのですか?