assuming you're talking about automatic variables (see Richard's post)
then the value is undefined. The standard allows "trap values" and
attempts to read a trap value will cause the program to fail.
The derivation seems to be:
C99 6.7.8 Initialization, p10: "If an object that has automatic storage
duration is not initialized explicitly, its value is indeterminate."
C99 3.17.2 "indeterminate value: either an unspecified value or a trap
representation"
C99 6.2.6 Representations of types / 6.2.6.1 General, p5
"Certain object representations need not represent a value of the object
type. If the stored value of an object has such a representation and is
read by an lvalue expression that does not have character type, the
behavior is undefined. If such a representation is produced by a side
effect that modifies all or any part of the object by an lvalue
expression that does not have character type, the behavior is undefined.
41) Such a representation is called a trap representation."
Footnote 41:
"Thus, an automatic variable can be initialized to a trap representation
without causing undefined behavior, but the value of the variable cannot
be used until a proper value is stored in it."
For C90, the path is a bit different:
C90 6.5.7 Initialization
"If an object that has automatic storage duration is not initialized
explicitly, its value is indetelminate."
C90 3.16 "undefined behavior: Behavior, upon use of [...] indeterminately
valued objects, for which this International Standard imposes no
requirements."
I'm not sure if in C90 an access with character type is exempted like in
C99.
Cheers,
lacos