#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
. Это то, что происходит?