| Deutsch English Français Italiano |
|
<b681ee05856e165c26a5c29bf42a8d9d53843d6d@i2pn2.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail
From: fir <fir@grunge.pl>
Newsgroups: comp.lang.c
Subject: Re: else ladders practice
Date: Fri, 01 Nov 2024 15:17:30 +0100
Organization: i2pn2 (i2pn.org)
Message-ID: <b681ee05856e165c26a5c29bf42a8d9d53843d6d@i2pn2.org>
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>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 1 Nov 2024 14:17:10 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="459878"; mail-complaints-to="usenet@i2pn2.org";
posting-account="+ydHcGjgSeBt3Wz3WTfKefUptpAWaXduqfw5xdfsuS0";
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24
X-Spam-Checker-Version: SpamAssassin 4.0.0
In-Reply-To: <2491a699388b5891a49ef960e1ad8bb689fdc2ed@i2pn2.org>
Bytes: 3837
Lines: 81
fir wrote:
> Bart wrote:
>> On 01/11/2024 12:55, fir wrote:
>>> Bart wrote:
>>>> On 01/11/2024 11:32, fir wrote:
>>>>> Bart wrote:
>>>>>> ral clear patterns here: you're testing the same variable 'n' against
>>>>>> several mutually exclusive alternatives, which also happen to be
>>>>>> consecutive values.
>>>>>>
>>>>>> C is short of ways to express this, if you want to keep those
>>>>>> 'somethings' as inline code (otherwise arrays of function pointers or
>>>>>> even label pointers could be use
>>>>>
>>>>> so in short this groupo seem to have no conclusion but is tolerant
>>>>> foir various approaches as it seems
>>>>>
>>>>> imo the else latder is like most proper but i dont lkie it optically,
>>>>> swich case i also dont like (use as far i i remember never in my code,
>>>>> for years dont use even one)
>>>>>
>>>>> so i persnally would use bare ifs and maybe elses ocasionally
>>>>> (and switch should be mended but its fully not clear how,
>>>>>
>>>>> as to those pointer tables im not sure but im like measurad it onece
>>>>> and it was (not sure as to thsi as i dont remember exactly) slow maybe
>>>>> dependant on architecture so its noth wort of use (if i remember
>>>>> correctly)
>>>>
>>>> Well, personally I don't like that repetition, that's why I mentioned
>>>> the patterns. You're writing 'n' 5 times, '==' 5 times, and you're
>>>> writing out the numbers 1, 2, 3, 4, 5.
>>>>
>>>> I also don't like the lack of exclusivity.
>>>>
>>>> However I don't need to use C. If those 'somethings' were simple, or
>>>> were expressions, I could use syntax like this:
>>>>
>>>> (n | s1, s2, s3, s4, s5)
>>>>
>>>
>>> on a C ground more suitable is
>>>
>>> {s1,s2,s3,s4,s5)[n]
>>>
>>> //which is just array indexing
>>
>> No, it's specifically not array indexing, as only one of s1 - s5 is
>> evaluated, or nothing is when n is not in range, eg. n is 100.
>>
>> You could try something like that in C:
>>
>> int x;
>>
>> x = ((int[]){(puts("a"),10), (puts("b"),20), (puts("c"), 30),
>> (puts("d"),40)})[3];
>>
>> printf("X=%d\n", x);
>>
>> The output is:
>>
>> a
>> b
>> c
>> d
>> X=40
>>
>> Showing that all elements are evaluated first. If index is 100, the
>> result is also undefined.
>>
>>
> :-O
> what is this, first time i see such thing
>
im surprised that it work, but in fact i meant that this syntax is old c
compatible but sych thing like
{printf("ONE"), printf("TWO"), printf("THREE")} [2]
shouldn evaluate al just the one is selected
like in array tab[23] not eveluates something other than tab[23]