I have some doubt in this simple program.
void hello()
{
int a;
printf("uninitialized in hello: %d\n",a);
}
int main()
{
int value;
printf("uninitialized in main: %d\n",value);
hello();
return 0;
}
If i am compile and run this program.
user@toad:~$ gcc -Wall simple.c
simple.c: In function ‘hello’:
simple.c:6:3: warning: ‘a’ is used uninitialized in this function [-Wuninitialized]
printf("uninitialized in hello: %d\n",a);
^
simple.c: In function ‘main’:
simple.c:12:11: warning: ‘value’ is used uninitialized in this function [-Wuninitialized]
printf("uninitialized in main: %d\n",value);
^
user@toad:~$ ./a.out
uninitialized in main: 0
uninitialized in hello: 32672
user@toad:~$ ./a.out
uninitialized in main: 0
uninitialized in hello: 32679
user@toad:~$ ./a.out
uninitialized in main: 0
uninitialized in hello: 32599
user@toad:~$ ./a.out
uninitialized in main: 0
uninitialized in hello: 32560
user@toad:~$ ./a.out
uninitialized in main: 0
uninitialized in hello: 32585
Why main()
function prints
uninitialized in main: 0
but hello()
function prints
uninitialized in hello: [some garbage value.]
Is it is undefined behaviour?