On Thu, Sep 06, 2007 at 05:06:52PM +0200, David Kastrup wrote: > > If an object that has automatic storage duration is not initialized > > explicitly, its value is indeterminate. If an object that has static > > storage duration is not initialized explicitly, then: > > > > -- if it has pointer type, it is initialized to a null pointer; > > That's actually a new one to me. I don't think that it has been > always the case in ANSI C. I don't have the C89 standard, so it's hard to be authoritative. However, according to TCOR1 to the C89 standard, the original text of 6.5.7 contained: 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. and was changed to: If an object that has static storage duration is not initialized explicitly, then: - if it has pointer type, it is initialized to a null pointer; - if it has arithmetic type, it is initialized to zero; - if it is an aggregate, every member is initialized (recursively) according to these rules; - if it is a union, the first named member is initialized (recursively) according to these rules. But for the case of pointer initializations, both have the same effect. So I think it has always been the case. Pre-ANSI, who knows. :) You can find TCOR1 here: http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm And now I must go get some real work done instead of snooping through standards. :) -Peff - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html