Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: A thought of C
Date: Tue, 21 Apr 2026 21:04:30 -0700
Organization: A noiseless patient Spider
Lines: 27
Message-ID: <86mryv63ox.fsf@linuxsc.com>
References: <3a3462bdd72c4ed9d392a78b7d369a7b5ccc3b04.camel@gmail.com> <10rtdpd$2g1i0$1@dont-email.me> <10rth24$2h2ls$1@dont-email.me> <10rtnud$2jfm5$1@dont-email.me> <10s01e1$384ct$1@dont-email.me> <10s06q2$39rhn$1@dont-email.me> <10s2a2u$3t0f5$1@dont-email.me> <10s2fhc$3ug5h$1@dont-email.me> <10s2h5f$3uctl$1@dont-email.me> <10s2oq0$19am$1@dont-email.me> <10s2tfe$2lvm$1@dont-email.me> <10s34f6$542f$1@dont-email.me> <10s3akj$7ajg$1@dont-email.me> <10s3otn$bk6v$1@dont-email.me> <10s5atn$2sck7$1@paganini.bofh.team> <10s5o2d$tone$1@dont-email.me> <10s640g$118op$1@dont-email.me> <10s67rh$12pa7$1@dont-email.me> <10s7dto$1b41l$4@dont-email.me> <10s7hjq$1davi$1@kst.eternal-september.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Wed, 22 Apr 2026 04:04:31 +0000 (UTC)
Injection-Info: dont-email.me; posting-host="99049ae40d76034458eb7791fd827e8a"; logging-data="2085314"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/qpURgQnevaa91D8iX5tLl5ZvF16MTZ3U="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:UCx1Yv9d4Hv0EGmQ5KOdsmigBgM= sha1:na93nDZEJMmkTTgSS4OwAVPrfT8=
Xref: csiph.com comp.lang.c:397776
Keith Thompson writes:
> David Brown writes:
> [...]
>
>> You seem to think that just writing "int a;" somehow creates an int
>> object called "a" along with a slot on the stack or a dedicated
>> register. That does not happen in many compilers. And it does not
>> happen in the C semantics. "a" is an lvalue that /potentially/
>> designates an object - for an uninitialised local variable, it does
>> not designate an object until a value is assigned.
>
> [...]
>
> I don't think that's correct.
In fact, it's wrong. Encountering a declaration 'int a;' certainly
means that in the abstract machine there is an object corresponding
to the identifier 'a'.
> Within the scope of a declaration `int a;` the expression `a` is
> an lvalue that *does* designate an object.
And more than that: in the abstract machine an object corresponding
to the identifier 'a' comes into existence as soon as the block
containing 'int a;' is entered, regardless of whether 'a' is
initialized or referenced in any way.