Path: ...!eternal-september.org!feeder2.eternal-september.org!i2pn.org!i2pn2.org!.POSTED!not-for-mail From: fir Newsgroups: comp.lang.c Subject: Re: else ladders practice Date: Thu, 31 Oct 2024 15:29:34 +0100 Organization: i2pn2 (i2pn.org) Message-ID: <6723944E.2040305@grunge.pl> References: <3deb64c5b0ee344acd9fbaea1002baf7302c1e8f@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: i2pn2.org; logging-data="308497"; 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 To: Dan Purgert In-Reply-To: X-Spam-Checker-Version: SpamAssassin 4.0.0 Bytes: 3115 Lines: 70 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 my quiestion is more liek what is a metter of beter style from my youth i roughly always added those elses notw i consider not to write them