Deutsch English Français Italiano |
<slrnvi75c6.fkp.dan@djph.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Dan Purgert <dan@djph.net> Newsgroups: comp.lang.c Subject: Re: else ladders practice Date: Thu, 31 Oct 2024 14:34:46 -0000 (UTC) Organization: A noiseless patient Spider Lines: 81 Message-ID: <slrnvi75c6.fkp.dan@djph.net> References: <3deb64c5b0ee344acd9fbaea1002baf7302c1e8f@i2pn2.org> <slrnvi746p.fkp.dan@djph.net> <6723944E.2040305@grunge.pl> Injection-Date: Thu, 31 Oct 2024 15:34:46 +0100 (CET) Injection-Info: dont-email.me; posting-host="30c0bec475b00646c15587bfe2a34f7f"; logging-data="2862188"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19X99ifxOyBI881906XT/J3EYMRzJ6e38A=" User-Agent: slrn/1.0.3 (Linux) Cancel-Lock: sha1:Y4XailjsYAnhBtpOgZEG+EaYHMs= Bytes: 3491 On 2024-10-31, fir wrote: > Dan Purgert wrote: >> On 2024-10-31, fir wrote: >>> somethins i got such pices of code like >>> >>> if(n==1) {/*something/} >>> if(n==2) {/*something/} >>> if(n==3) {/*something/} >>> if(n==4) {/*something/} >>> if(n==5) {/*something/} >>> >>> technically i would need to add elses - but the question is if to do that >>> >>> do teh code has really chance to be slower without else (except some >>> very prmitive compilers) ?? >> >> In the above, all conditionals are always checked -- that is the truth >> of a previous conditional statement has no bearing on subsequent tests. >> This leads to the potential of tests going off in directions you hadn't >> necessarily anticipated. >> >> However, 'if..elseif..else' will only check subsequent conditionals if >> the prior statements were false. So for the case that "n=2", you're >> only ever testing the two cases "if (n==1)" (which is false) and >> "elseif(n==2)". The computer just skips to the end of the set of >> statements. >> >> >> Given this MWE (my own terrible code aside ;) ): >> >> int main(){ >> int n=0; >> printf ("all if, n=%u\n",n); >> if (n==0) { printf ("n: %u\n",n); n++;} >> if (n==1) { printf ("n: %u\n",n); n++;} >> if (n==2) { printf ("n: %u\n",n); n++;} >> if (n==3) { printf ("n: %u\n",n); n++;} >> if (n==4) { printf ("n: %u\n",n); n++;} >> printf ("all if completed, n=%u\n",n); >> >> n=3; >> printf ("with else if, n=%u\n",n); >> if (n==0) { printf ("n: %u\n",n); n++;} >> else if (n==1) { printf ("n: %u\n",n); n++;} >> else if (n==2) { printf ("n: %u\n",n); n++;} >> else if (n==3) { printf ("n: %u\n",n); n++;} >> else { printf ("n: %u\n",n); n++;} >> printf ("with else if completed, n=%u\n",n); >> } >> >> >> You'll get the output: >> >> all if, n=0 >> n: 0 >> n: 1 >> n: 2 >> n: 3 >> n: 4 >> all if completed, n=5 >> with else if, n=3 >> n: 3 >> with else if completed, n=4 >> >> HTH :) >> > i not modify n in those {} blocks so this example is not much relevant I'm using that as a simplified case to force the issue. "n" could be modified anywhere, just so long as it is "between" any two of the test cases being checked. > > my quiestion is more liek what is a metter of beter style If it is a series of related conditions, then "if .. else if .. else". -- |_|O|_| |_|_|O| Github: https://github.com/dpurgert |O|O|O| PGP: DDAB 23FB 19FA 7D85 1CC1 E067 6D65 70E5 4CE7 2860