Quote:
If an object that has static storage duration is not initialized explicitly, it is initialized implicitly as if every member that has arithmetic type were assigned 0 and every member that has pointer type were assigned a null pointer constant.
That was the C89 draft. C99 explicitly states string literals:
Quote:
If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.
I get the remainder filled with 0 on both Linux/Windows with gcc, even if I use -std=c89. The C89 standard notes that initializing with: