Deutsch English Français Italiano |
<vg2llt$38ons$1@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: Fri, 1 Nov 2024 13:39:10 +0000 Organization: A noiseless patient Spider Lines: 69 Message-ID: <vg2llt$38ons$1@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> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 01 Nov 2024 14:39:10 +0100 (CET) Injection-Info: dont-email.me; posting-host="043844d4a216b291756c29a01a715cc9"; logging-data="3433212"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1885Tkxn1nVGx/z0ek75dKe" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:aq/eDQy747vlQoEw2JCTEV2YpCE= In-Reply-To: <6724CFD2.4030607@grunge.pl> Content-Language: en-GB Bytes: 3259 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.