Joe Nelson <j...@begriffs.com> writes: > Isaac Morland wrote: >> I hope you'll forgive a noob question. Why does the "After" >> initialization for the boolean array have {0} rather than {false}?
> I think using a value other than {0} potentially gives the incorrect > impression that the value is used for *all* elements of the > array/structure, whereas it is only used for the first element. There's been something vaguely bothering me about this proposal, and I think you just crystallized it. > Using {false} may encourage the unwary to try > bool foo[2] = {true}; > which will not set all elements to true. Right. I think that in general it's bad practice for an initializer to not specify all fields/elements of the target. It is okay in the specific case that we're substituting for a memset(..., 0, ...). Perhaps we could make this explicit by using a coding style like /* in c.h or some such place: */ #define INIT_ALL_ZEROES {0} /* in code: */ Datum values[N] = INIT_ALL_ZEROES; and then decreeing that it's not project style to use a partial initializer other than in this way. regards, tom lane