Path: ...!weretis.net!feeder9.news.weretis.net!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail From: fir Newsgroups: comp.lang.c Subject: Re: else ladders practice Date: Fri, 01 Nov 2024 15:08:45 +0100 Organization: i2pn2 (i2pn.org) Message-ID: <2491a699388b5891a49ef960e1ad8bb689fdc2ed@i2pn2.org> References: <3deb64c5b0ee344acd9fbaea1002baf7302c1e8f@i2pn2.org> <78eabb4054783e30968ae5ffafd6b4ff2e5a5f17@i2pn2.org> <6724CFD2.4030607@grunge.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Fri, 1 Nov 2024 14:08:27 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="459122"; 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: Bytes: 3396 Lines: 72 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