Path: csiph.com!news.swapon.de!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: C23 thoughts and opinions
Date: Mon, 03 Jun 2024 13:29:25 -0700
Organization: A noiseless patient Spider
Lines: 43
Message-ID: <868qzlojmi.fsf@linuxsc.com>
References:
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Mon, 03 Jun 2024 22:29:26 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="df68cad4d9500866e5e56f3de5ab6749"; logging-data="43441"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+TefgFCDPYTJb937F0GEK7IXJH9ozAd4g="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:eIPpDv5r5aI7Fib8KHkk+q5JZZg= sha1:DD2+5S88F0lB7++oYpOVEZakl2Q=
Xref: csiph.com comp.lang.c:385485
Lew Pitcher writes:
> On Sun, 02 Jun 2024 13:24:23 +0000, Kenny McCormack wrote:
>
>> In article ,
>> Lawrence D'Oliveiro wrote:
>>
>>> On Fri, 31 May 2024 17:55:13 -0500, Lynn McGuire wrote:
>>>
>>>> while (1)
>>>
>>> Why not
>>>
>>> while (true)
>>>
>>> or even
>>>
>>> for (;;)
>>>
>>> ?
>
> I've always considered
> for (;;)
> preferable over
> while (1)
> as the for (;;) expression does not require the compiler to expand
> and evaluate a condition expression.
>
> For the for (;;), the compiler sees the token stream
> , and emits a closed loop, but
> with while (1), the compiler sees ,
But the 'for (;;)' tokens need to be matched to a much more
complicated syntax, with three optional expression (one of
which might be a declaration) before assigning semantics.
There is actually a lot more to do when 'for (;;)' is used.
> and has to evaluate (either at compile time or at execution
> time) the value of the to determine whether or or
> not to emit the closed loop logic.
Both gcc and clang turn 'while (1)' into simple loops even
under -O0. So it can't be that hard.