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] = {};

Reply via email to