Prosba o pomoc - nechapu zapis v C

Tomáš Hamouz konfery.tomas.hamouz na seznam.cz
Pondělí Listopad 21 10:39:05 CET 2022


> To zkrácení Decoff != 0 na Decoff funguje tak, že při vyhodnocování logické podmínky
> se element "spočte" a pokud je výsledek cokoli různého od nuly, je to splněno
> ("ano", "true", "platí"). Pokud je nula, neplatí. Takže explicitní test na nulovost
> se nemusí psát, stačí se podívat na tu hodnotu jako takovou. Takže v C/C++ se to
> prostě píše rovnou krátce. Je to asi jako kdybyste v Pascalu psali if A=true then
> ... místo if A then ... Přeloží se to oboje stejně, ale je to delší na zápis a
> trochu méně přehledné a může to mást. 

To je samozřejmě pravda, ale už i C komunita občas pochopila, že to je
sémanticky špatně. Viz třeba MISRA
 - rule 12.1 - závorkování výrazů, nespoléhat na precedenci operátorů
 - rule 14.4 - výraz pro if má být typu boolean

Tomáš





Další informace o konferenci Hw-list