Hogyan lehet egy elágazást a legrövidebben megírni C-ben?
Hát körülbelül amit az első mond.
Még azt írd meg, hogy konkrétan ezekről a számokról szól a feladat, vagy a hasadra ütöttél, mert akkor nem kezdek el biteket fölírogatni.
Nyilván nem ez a feladat, mert ez így rohadt primitív.
A szóközöket bárki ki tudja törölni.
Legfőképp arra lettem volna kíváncsi, hogy tud-e valaki olyan, még lefutó(ha csak warningol a gcc az nem gáz) if-et(akár ? : formában), amiben nem kell beleírni háromszor azt, hogy x==érték, hanem valami trükkel elég lenne egyszer szerepelnie az (x==) résznek, és lenne még a 3 érték. Oké, hogy ott van a switch, de az karakterekben csak még hosszabb lenne.
Hogy konkretizáljam a példát, x egy karakter, ami ha egyenlő 68-cal, 70-nel, 76-tal vagy 84-gyel, akkor 1 változót beszorzok 2-vel.
y=(x==68||x==70||x==76||x==84)?2*y:y;
Ennél tovább egyszerűsíteni felesleges, mert csak nehezebb lesz átlátni a kódot. És nem karakterre optimalizáljuk a forráskódot, hanem lefordított utasítások számára minimalizálunk, vagy mint általában futásidőre maximalizálunk. Akármilyen nagy is a forrásfájl nem az a cél, hogy az ember által olvasott részt csökkentsük méretben.
Nem lehet véletlenül, hogy a sok féltétel egy tömbben van? Mármint csak így lenne értelme a feladatnak; van x darab feltétel és vizsgáljuk meg a leggyorsabban.
int i=0;
for(;i<len&&tomb[i]!=x;i++)
if(i<len) utasitas();
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!