[elektro] C mégegyszer (SWITCH)
vajk fekete
halaloszto at yahoo.co.uk
Wed Apr 7 13:55:27 CEST 2010
amit akarsz, az egy algoritmus. az az algoritmus, hogy bizonyos esetekben eztazt kell csinalni es kesz, mas esetekben amazt meg defaultot, a maradekban meg csak a defaultot.
lehet szorakozni, hogy minnel tomorebben implementaljuk az algoritmust a C nyelvi elemeivel, de ha nincs nagy hatekonysag es tarhely presszura, akkor egy nyilvanvaloan trivialis megoldas tokre celravezeto. nehezebb elrontani, olvashato, es komoly az esely, hogy nem is szar a performanciaja.
a konkret peldara, ha nincs tul sok eset, akar csinalni egy halom egymasba tett if then else-et, ertelmesen formazni, es ugy sorrendezni az eseteket, hogy a performancia is jo legyen, meg legyen olyan ag is, ahova a defaultot kell tenni.
pl ha 1-re es 8-re A; 4-re es 38-ra printf es default; egyebekre meg default; akkor:
if (a==1 || a==8) A;
else {
if (a==4) printf("4");
if (a==38) printf("38");
a=0;
}
vajk
________________________________
From: potyo <potyo.ada at gmail.com>
To: elektro at tesla.hu
Sent: Wed, 7 April, 2010 11:56:40
Subject: Re: [elektro] C mégegyszer (SWITCH)
Egyik megoldás, hogy betenni mindkét helyre ugyanazt a kódot, a
fordító meg talán észreveszi és optimalizál. Csak egy ágról kellene
továbbmenni, vagy többről is? Előbbi esetben lehet így, vagyis a break
kimarad a case 4 végéről:
case 4:
printf("4");
default:
a=0;
break;
2010/4/7 hg12345 <hg12345 at freemail.hu>:
> Hi!
>
> Létezik C-s megoldás a SWITCH-en belül egy ág végrehajtása után egy meghatározott CASE ágon folytassa a program a futását?
>
> switch(a){
> case 1:
> break;
>
> case 4:
> printf("4");
> goto "DEFAULT";
> case 8:
> break;
>
> case 38:
> printf("38");
>
> default:
> a=0;
> break;
> };
>
> Nem ez a program, de a default ágban van a programnak defenziv része, azok az ágak amik befejeződtek, itt szeretném befejezni.
>
> Az automatikusan definiált ASM címkékkel nem lehet mit kezdeni .Lxxx nem egyértelmű a megnevezése
>
> Természetesen megoldható egy plusz CIMKE bevezetésével, de egy C szerű megoldásnak jobbak örülnék.
>
> -----------------------------------------
> elektro[-flame|-etc]
>
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list