I’ll try when I get home (in a few hours).
I did some testing, and yes, if a variable isn’t assigned a value, it returns 0.
That is - unless there hasn’t been declared/assigned a value to some other variable. Then it returns 4096.
$ cat und.c
#include <stdio.h>
void main(void)
{
int i=4;
int j;
int *k=&i;
int *l;
printf("%d\n%d\n",i,j);
printf("%d\n%d\n",k,l);
}
gives
$ ./und
4
0
-1073743696
4096