Possible Duplicate:
Is uninitialized data behavior well specified?
I tried the following code
#include<stdio.h>
void main()
{
int i; \
printf('%d',i);
}
The result gave garbage value in VC++, while same in tc was zero.
What will be the correct value?
Will an uninitialized variable by default have value of zero? or it will contain garbage value?
Next is on the same
#include<stdio.h>
void main()
{
int i,j,num;
j=(num>0?0:num*num);
printf("\n%d",j);
}
What will be the output of the code above?
Technically, the value of an uninitialized non static local variable is Indeterminate[Ref 1].
In short it can be anything. Accessing such a uninitialized variable leads to an Undefined Behavior.[Ref 2]
[Ref 1]
C99 section 6.7.8 Initialization:
[Ref 2]
C99 section 3.18 Undefined behavior:
Note: Emphasis mine.