ceckovy kviz 2 (hardcore)

Jan Waclawek konfera na efton.sk
Středa Září 6 17:39:15 CEST 2023


>Takato konstrukcia je teda riadna zhovadilost :)
> 
> Samozrejme goto doprostred 
> ciziho bloku je zlo a mel by na to byt aspon warning ;)

Plny suhlas. goto considered harmful. Ale je dovolene, takze musi mat
nejake pravidla...

> Myslel jsem si, ze vzdy 10. Godbolt rika 10. Nevim, proc by to melo byt 
> jinak a co je na tom hardcorove kvizoveho? 

>V oboch pripadoch 10. Nemam na to zdovodnenie podla normy, takto by som 
>kod nikdy nenapisal, takze som nemal dovod studovat to. Vychadzam len z 
>toho, ako prekladac preklada if-else. 

Norme je fuk, ako sa zvyknu pisat prekladace. Norma hovori doslovne len to,
ze sa skace (je tam pouzite slovo "jump") na prikaz za navestim. No tak
tam skocim a vykonam ho. A potom narazim na else.

No a norma tiez hovori, ze v if(C) A else B; sa A vykonava ak je vyraz C
nenulovy, a B ak je nulovy. 

Ja si toto viem napriklad vysvetlit takto: ak narazim na else, pozriem sa
do mojho zoznamu vyhodnotenych vyrazov, ci som uz vyhodnocoval
predchadzajuci if. Aha, nevyhodnocoval, tak toto je vyborna prilezitost ho
vyhodnotit a ak je nulovy, vykonat to co je na else.

Lenze...

Ked sme sa bavili o if(A), tak som sa pozrel, ako to je v C99 vysvetlene.
Skutocne, v 6.8.4.1 je explicitne pre if(C) napisane to s tym nulovym a
nenulovym vyrazom (_Bool je v C dodatocne domyslene; v C++ je uz bool
nativny typ a pre vsetky podmienky je to teda sformulovane tak, ze sa
vyraz konvertuje na bool a podla toho sa sprava).

A tam som uvedel aj:
 If the first substatement is reached via a label, the second substatement
is not
executed.

Cize ano, mate pravdu, k bude vzdy 10; ale nie je to kvoli tomu lebo "tak
je to normalne", ale kvoli tomu, ze je to explicitne predpisane... :-)

wek



Další informace o konferenci Hw-list