Вы получаете доступ к неинициализированным местным жителям, которые могли быть объявлены register
.
Это неопределенное поведение. Ваша программа больше не имеет смысла.
Если исправить это, добавив несколько операторов &
(чтобы местные жители больше не могли быть объявлены register
)
#include <stdio.h>
void something(){
int third;
int fourth;
printf("third: %d\n", *&third);
printf("fourth: %d\n", *&fourth);
}
int main(){
int first;
int second;
printf("first: %d\n", *&first);
printf("second: %d\n", *&second);
something();
return 0;
}
тогда, что касается C, значения будут неуказанными. Что вы получите, зависит от вашей окружающей среды
и что основная вызывающая libc-подпрограмма оставила в стеке до того, как она сделала вызов main
.