A két kódrészlet egyenértékű-e?
EGYIK
if (a == 0) ki ='0'
else {
if (a > 0) ki='+'
else ki='-'
}
MÁSIK
if (a == 0) ki ='0'
else if (a > 0) ki='+'
else ki='-'
és tudtok olyan példát mondani, amikor két ilyen kódrészlet nem egyenértékű?
Egyenértékű.
Nem tudom mit értesz "két ilyen kódrészlet" alatt, ha arra, de az első else kapcsoszárójelei feleslegesek minden esetben.
"és tudtok olyan példát mondani, amikor két ilyen kódrészlet nem egyenértékű?"
Ja, pl. mikor az else ág kihagyásával nyitsz új szelekciót.
Működés szempontjából olyannyira nincs különbség, hogy ha ennyi a kód, akkor a GNU fordító ugyanazt a futtatható programot fogja belőle fordítani.
Miről is van szó? Ha az if-nek van egy else ága, akkor az az else ággal együtt képez egyetlen utasítást. Az első programrészletben a külső else ágban tehát a kapcsos zárójelek között egyetlen egy utasítás van, így a kapcsos zárójel elhagyható. Ha meg elhagyjuk, akkor tulajdonképpen ugyanazt a forrást kapjuk, mint ami a második esetén, csak a sortörések, behúzások vannak máshol, tehát eltérés pusztán a whitespace karakterekben van.
Különbség maximum a kód eleganciájában, átláthatóságában, bővíthetőségében van. Úgy általában szebbnek tartott a második megoldás. De ez függ attól is, hogy úgy általában miről is szól a program maga.
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!