Deutsch   English   Français   Italiano  
<vg7opm$bejq$2@dont-email.me>

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

Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: else ladders practice
Date: Sun, 3 Nov 2024 12:03:03 +0000
Organization: A noiseless patient Spider
Lines: 69
Message-ID: <vg7opm$bejq$2@dont-email.me>
References: <3deb64c5b0ee344acd9fbaea1002baf7302c1e8f@i2pn2.org>
 <vg0t3j$2ruor$1@dont-email.me>
 <78eabb4054783e30968ae5ffafd6b4ff2e5a5f17@i2pn2.org>
 <vg2g37$37mh3$1@dont-email.me> <6724CFD2.4030607@grunge.pl>
 <vg2llt$38ons$1@dont-email.me>
 <2491a699388b5891a49ef960e1ad8bb689fdc2ed@i2pn2.org>
 <b681ee05856e165c26a5c29bf42a8d9d53843d6d@i2pn2.org>
 <vg2ttn$3a4lk$1@dont-email.me> <vg33gs$3b8n5$1@dont-email.me>
 <vg358c$3bk7t$1@dont-email.me> <vg37nr$3bo0c$1@dont-email.me>
 <vg3b98$3cc8q$1@dont-email.me> <vg5351$3pada$1@dont-email.me>
 <vg62vg$3uv02$1@dont-email.me> <6726C341.6030102@grunge.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 03 Nov 2024 13:03:03 +0100 (CET)
Injection-Info: dont-email.me; posting-host="85c5c155f10840c3fe6d2c820512f5de";
	logging-data="375418"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/7Q3IIJZ06Ujj5LK53aWmW"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:Gw3BDwf2uVb/VkRY2zR6Eca8ilM=
Content-Language: en-GB
In-Reply-To: <6726C341.6030102@grunge.pl>
Bytes: 3387

On 03/11/2024 00:26, fir wrote:
> Bart wrote:
>>  ...
> 
> as to this switch as i said the C jas some syntax that resembles switch 
> and it is
> 
> [2] { printf("one"), printf("two"), printf("three") }
> 
> i mean it is like this compound sometheng you posted
> 
>   { printf("one"), printf("two"), printf("three") } [2]
> 
>   but with "key" on the left to ilustrate the analogy to
> 
> swich(n) {case 0: printf("one"); case 1: printf("two"); case 2: 
> rintf("three") }
> 
> imo the resemblance gives to think
> 
> the difference is this compound (array-like) example dont uses defined 
> keys so it semms some should be added
> 
> [n] {{1: printf("one")},{2: printf("two")},{3: printf("three")} }
> 
> so those deduction on switch gives the above imo
> 
> the question is if some things couldnt be ommitted for simplicity
> 
> [key] {'A': printf("one"); 'B': printf("two"); 'C': printf("three"}; }


> something like that
> 
> (insted of
> 
> switch(key)
> {
> case 'A': printf("one"); break;
> case 'B': printf("two"); break;
> case 'C': printf("three"}; break;
> }


Here the switch looks clearer. Write it with 300 cases instead of 3, 
then that becomes obvious.

The first time I wrote a big C program, I used a syntax like this:

   switch (x)
   when 'A', 'B' then printf("one")
   when 'C'      then printf("two")
   else               printf("three")
   endsw

This needed to be converted to normal C before compiling, but the macro 
system wasn't quite up to the job (making using gnu C which allows for 
lists of case labels).

Instead I used a script to do the conversion, which needed 1:1 line 
correspondence. The result was something like this:

   switch (x) {
   break; case 'A': case 'B': printf("one");
   break; case 'C': printf("two");
   break; default:  printf("three");
   }