| Deutsch English Français Italiano |
|
<vrelvn$12ddq$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: David Brown <david.brown@hesbynett.no> Newsgroups: comp.lang.c Subject: Re: int a = a (Was: Bart's Language) Date: Wed, 19 Mar 2025 15:56:55 +0100 Organization: A noiseless patient Spider Lines: 43 Message-ID: <vrelvn$12ddq$1@dont-email.me> References: <vracit$178ka$1@dont-email.me> <vrc2d5$1jjrf$1@paganini.bofh.team> <vrc4eb$2p28t$1@dont-email.me> <vrc75b$2r4lt$1@dont-email.me> <vrccjb$b3m6$1@news.xmission.com> <vrcef2$33076$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Wed, 19 Mar 2025 15:57:05 +0100 (CET) Injection-Info: dont-email.me; posting-host="ea1b0970b8bf0b1e1c0e9bf265f385ce"; logging-data="1127866"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+xKWBnxvaOaj5i1ltPBCzwAM14+dYA75o=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Cancel-Lock: sha1:kxwDoDZ62dyB6BKyywMQx3ptg9E= Content-Language: en-GB In-Reply-To: <vrcef2$33076$1@dont-email.me> Bytes: 3241 On 18/03/2025 19:36, Janis Papanagnou wrote: > On 18.03.2025 19:04, Kenny McCormack wrote: >> In article <vrc75b$2r4lt$1@dont-email.me>, >> David Brown <david.brown@hesbynett.no> wrote: >> ... >>>> gcc won't warn until you say '-Wextra', and then only for: >>>> >>>> int a = a + 1; >>> >>> People would not normally write "int a = a;". It is used as a common >>> idiom meaning "I know it is not clear to the compiler that the variable >>> is always initialised before use, but /I/ know it is - so disable the >>> use-without-initialisation warnings for this variable". > > Wow! - It would never have occurred to me that "int a = a;" being > considered an idiom, let alone a "common idiom". > It is certainly an idiom, and certainly viewed by gcc as a way to avoid an "uninitialized" warning (unless "-Winit-self" is also enabled), and it is an idiom I have seen documented in at least one other compiler (though I can't remember which - I've read many compiler manuals over the decades). But judging from the posts here, it may not be a "common" idiom. (And I am not suggesting it is a /good/ idiom. It's not one I use myself, and I have "-Winit-self" in my list of standard warning flags because it is conceivable that I write "int a = a;" in error. But there are lots of idioms and common practices in C that I don't like personally.) As far as I understand it (and I hope to be corrected if I am wrong), "int a = a;" is not undefined behaviour as long as the implementation does not have trap values for "int". It simply leaves "a" as an unspecified value - just like "int a;" does. Thus it is not in any way "worse" than "int a;" as far as C semantics are concerned. Any difference is a matter of implementation - and the usual implementation effect is to disable "not initialised" warnings. It is in much the same category as "(void) x;", which is an idiom for skipping an "unused variable" or "unused parameter" warning.