Delka log.radku
Draxal Miroslav
evik@vol.cz
Pondělí Prosinec 29 14:16:23 CET 2008
Ach tak. Potom vse jasne. Diky velice. MIRA
-----Original Message-----
From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
Behalf Of Pavel Troller
Sent: Monday, December 29, 2008 12:58 PM
To: HW-news
Subject: Re: Delka log.radku
> No ano, potom vse co je za ; je vlastne REM, tak potom nevim proc
> pouzivat /* */. Nemel by kompiler zarvat, ze je chyba? Tohle jsou fakt
> pro me zajimavy chyby, který nekdy objevit je horor. Často pomuze
> nahlednuti ciziho člověka, kterej to nemá v hlave ofoceny ale cte sys.
> radek po radku. MIRA
>
Zdravím,
ne, není pravda, že vše, co je za středníkem, je REM - nejsme v
BASICu, ale v C :-).
Středník je oddělovač jednotlivých "příkazů" - tj. nehraje si na
fyzické konce řádků, ale jen na ukončení pomocí sředníku.
Příklad:
a = 1 ; b = 2 ; c = 3 ;
představuje 3 přiřazovací příkazy na jednom řádku, provedou se
všechny.
Mohu ale napsat:
a
=
3
;
a bude to úplně to samé, neboť normální řádková struktura je
kompilátorem ignorována.
A nyní pozor: Vaše chyba způsobila zjednodušeně řečeno toto:
a = 3 ; + 4 ; + 5 ;
Co tohle znamená ? První přiřazovací příkaz dává smysl a proto se
provede. Ten druhý, vzniklý tím nadbytečným středníkem (a třetí
jakbysmet) nikam nepřiřazuje, je to jen ten "výkřik do tmy", který však
je v C zcela legální. To vyplývá z toho, že v C vždy mohu ignorovat
návratovou hodnotu volané funkce, a výraz je vlastně zvláštní případ
funkce. Proto to v tomto konkrétním případě působí, jako by ten středník
"zakomentoval" zbytek řádku, ale není tomu tak
- on jen rozdělil jeden složitější výraz v přiřazovacím příkazu na více
jednodušších a u všech kromě prvního chybí levá strana, takže se
"zahodí".
Už je to jasnější ?
S pozdravem Pavel Troller
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list