On Wed, 2 Oct 2019 at 11:34, Joe Nelson <j...@begriffs.com> wrote: > 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. "The > remainder of the aggregate shall be initialized implicitly the same as > objects that have static storage duration." > > The rest of the elements are being initialized to zero as interpreted by > their types (so NULL for pointers, 0.0 for floats, even though neither > of them need be bitwise zero). Setting the first item to 0 matches that > exactly. > > Using {false} may encourage the unwary to try > > bool foo[2] = {true}; > > which will not set all elements to true. >
Thanks for the explanation. So the first however many elements are in curly braces get initialized to those values, then the rest get initialized to blank/0/0.0/false/...? If so, I don't suppose it's possible to give empty braces: bool nulls[Natts_pg_attribute] = {};