[elektro] C kérdés
István
hobilobi at gmail.com
Tue May 13 22:27:45 CEST 2008
hg12345 írta:
> Adott a
>
> switch (v)
> {
> case 1:
> if (feltétel)
> {
> case 2:
>
> };
> break;
>
> case 3:
> for(i=0;i<100;i++)
> {
> case 4:
> };
> break;
>
> }
>
> A fenti példa lefordul a GNU 4.02 (4.03) alatt és nem jelez hibát.
> A Kernighan könyv erről nem ír egy szót se.
> Ha nem tiltott, akkor szabad a switch tartományán belül akárhová
> beugrani? Erre nincs kitétel a C leírásban.
> Még az if esetén elmegy, de egy ciklusba igy belépni nem
> meghatározható jelenségekhez vezethet.
>
> és még nem ajálják a goto-t :-(), de eszerint hasonló
> meggondolatlanságot is el lehet követni, fordító álltal támogatott
> formában is!
A fordító csak szintaktikailag ellenörzi a programot. Ha hülyeséget csinálsz (pl. beugrasz egy
ciklusba az inicializálás megkerülésével) az a te bajod.
A fordító nem tudhatja, hogy ezt tudatlanságból csináltad, vagy valami körmönfont trükköt
alkalmazol.
Léteznek szemantikai ellenörző programok amik felhívják az ilyenekre a figyelmedet, aztán te
döntesz, hogy az tényleg hiba mert nem úgy akartad, vagy figyelmen kivül hagyod, mert azt
tényleg úgy akartad és szerinted az jó lesz.
Sokan éppen ezért szeretik a C-t, mert nagy a szabadság a program írásában.
--
Szabados István
More information about the Elektro
mailing list