Also worth noting that any padding bits are zeroed as well for
aggregate and union types. Not just setting all pointer values to NULL
and arithmetic types to positive or unsigned zero.

Op di 2 apr. 2019 om 08:17 schreef Skip Tavakkolian
<skip.tavakkol...@gmail.com>:
>
> like this:
>
> #include <u.h>
> #include <stdio.h>
>
> struct option {
> int n;
> char *s;
> int flags;
> };
>
>
> int main(void)
> {
> struct option opt = { 1, "test" };
> static struct option opt2;
>
> printf("%d %s %x\n", opt.n, opt.s, opt.flags);
> printf("%x\n", opt2.flags);
> return 0;
> }
>
>
> On Tue, Apr 2, 2019 at 8:02 AM Skip Tavakkolian <skip.tavakkol...@gmail.com> 
> wrote:
>>
>> I interpret it as: initialize it like a static variable.
>>
>> On Tue, Apr 2, 2019 at 7:53 AM Kyohei Kadota <lu...@lufia.org> wrote:
>>>
>>> Thank you for a reply.
>>>
>>> I read spec on http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
>>> then I'm confusing.
>>> This spec describes Initialization:
>>>
>>> > 6.7.8 Initialization, p127
>>> >
>>> > 19 The initialization shall occur in initializer list order, each 
>>> > initializer provided for a
>>> > particular subobject overriding any previously listed initializer for the 
>>> > same subobject;132)
>>> > all subobjects that are not initialized explicitly shall be initialized 
>>> > implicitly the same as
>>> > objects that have static storage duration.
>>>
>>> What is "be initialized implicitly the same as objects that have
>>> static storage duration" mean?
>>>
>>> 2019年4月2日(火) 9:27 Jeremy O'Brien <neut...@fastmail.com>:
>>> >
>>> > On Mon, Apr 1, 2019, at 11:33, Kyohei Kadota wrote:
>>> > > Hi, 9fans. I use 9legacy.
>>> > >
>>> > > About below program, I expected that flags field will initialize to
>>> > > zero but the value of flags was a garbage, ex, "f8f7".
>>> > > Is this expected?
>>> > >
>>> > > ```
>>> > > #include <stdio.h>
>>> > >
>>> > > struct option {
>>> > >     int n;
>>> > >     char *s;
>>> > >     int flags;
>>> > > };
>>> > >
>>> > > int
>>> > > main(void)
>>> > > {
>>> > >     struct option opt = {1, "test"};
>>> > >     printf("%d %s %x\n", opt.n, opt.s, opt.flags);
>>> > >     return 0;
>>> > > }
>>> > > ```
>>> > >
>>> > >
>>> >
>>> > According to C99: "If an object that has automatic storage duration is 
>>> > not initialized explicitly, its value is indeterminate."
>>> >
>>> > Stack variable == automatic storage duration. This appears to be correct 
>>> > behavior to me.
>>> >
>>>

Reply via email to