Stránka 1 z 1

[C] Jak zjednodušit 2 zřetězěné podmínky?

Napsal: 23 dub 2013 00:40
od CZechBoY
Zdravim,
mám podmínku dejme tomu

Kód: Vybrat vše

(a < 3 && cislo == 0) || (a >= 3 && cislo > 1000)

a chtěl bych se zeptat jestli by to nešlo nějak zjednodušit, aby tam podmínka a < 3 byla jen jednou.

v Assembleru to jde, možná nějakou optimalizací překladače to udělá to stejný jako v Assembleru kdybych použil

Kód: Vybrat vše

if(a > 3) {
  if(cislo == 0) {/* cosi */}
} else {
  if(cislo > 1000) {/*cosi (stejny kod jako vyse) */}
}


nápady, tipy klidně pište, dík

Re: [C] Jak zjednodušit 2 zřetězěné podmínky?

Napsal: 23 dub 2013 19:27
od faraon
No, nevím jestli by se to smělo nazývat zjednodušení, spíš bych to pojmenoval pár termíny nepublikovatelnými před dvaadvacátou hodinou, ale udělat to jde:

Kód: Vybrat vše

if (a<3?!cislo:cislo>1000)


Jedno slušné slovo pro to vlastně existuje: obfuskace :lol:

Další možnost je použít GOTO, ale tím z toho Céčka uděláš zase jen ten nestrukturovaný assembler...

Re: [C] Jak zjednodušit 2 zřetězěné podmínky?

Napsal: 23 dub 2013 19:41
od CZechBoY
ternár mě nenapadl a nevypadá ani jako dobrý řešení :D

včera jsem koukal na CodeProject, kde tam řešili zjednodušení podmínky pro nějaký obdélník, u toho jsem zjistil že to asi nepude pro můj příklad