Deutsch   English   Français   Italiano  
<vtrvc6$mjoi$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Lew Pitcher <lew.pitcher@digitalfreehold.ca>
Newsgroups: comp.lang.c
Subject: Re: Checking the loop variable after the loop has ended (Was: Loops
 (was Re: do { quit; } else { }))
Date: Thu, 17 Apr 2025 22:29:26 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <vtrvc6$mjoi$1@dont-email.me>
References: <vspbjh$8dvd$1@dont-email.me>
	<87ikn3zg18.fsf@nosuchdomain.example.com> <vtqnv9$hf83$1@dont-email.me>
	<87fri68w2c.fsf@nosuchdomain.example.com>
	<vtrrdi$1smfe$1@news.xmission.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 18 Apr 2025 00:29:26 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="15b376c78d30a238acea0483949cc1b8";
	logging-data="741138"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18F07V3lqG80zd78j2qLSGNPWU3Rw8Pch8="
User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508
 git://git.gnome.org/pan2)
Cancel-Lock: sha1:/gTaTyoxHF/lEmzDdoX//s1p5fU=
Bytes: 2580

On Thu, 17 Apr 2025 21:21:54 +0000, Kenny McCormack wrote:

> In article <87fri68w2c.fsf@nosuchdomain.example.com>,
> Keith Thompson  <Keith.S.Thompson+u@gmail.com> wrote:
> ...
>>IMHO it doesn't much matter what the value is after the loop ends, but
>>any standard for a language with such a feature should either restrict
>>the scope to the loop, specify the value the variable has after the
>>loop, or explicitly say that it's unspecified or undefined.
> 
> I frequently check the value of the loop variable after the loop has ended
> in order to determine if the loop ended "normally" or prematurely via
> "break".  E.g.,
> 
>     for (i=0; i<10; i++) { code that might or might not break }
>     if (i == 10) puts("It ended normally");

It's also a handy idiom for a compact list search loop
where the terminating condition is either end of the list, or
a matched entry.
If the cursor isn't the end-of-list marker, then it references
the matched entry;

  for (n = NUM_ENTRIES; (n >= 0) && (node[n] != key); --n) continue;
  if (n != -1) printf("Found key at entry %d\n",n);

> I've applied this method in many C and (vaguely) C-like languages.
> Any language with a "for" type loop, where you can check the value after
> the loop can avail themselves of this method.

I concur :-)

-- 
Lew Pitcher
"In Skills We Trust"