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.