<stdbool.h>/C23 bool/true/false; was: goto considered harmful; was: ceckovy kviz 2 (hardcore)

Jan Waclawek konfera na efton.sk
Pátek Září 8 13:11:47 CEST 2023


No zakladny problem v tom C je, ze ten _Bool je dodatocny hack, a je to
celociselny typ.

V "lepsich" jazykoch je to jednoducho iny nez celociselny typ, takze veci
ako porovnanie neprichadzaju (bez explicitneho pretypovania, napr. cez
ord()) do uvahy, takze toto jednoducho nie je otazka.

Lenze v C, kedze to je celociselny typ, da sa s nim robit aritmetika
(vratane porovnania s inymi celociselnymi hodnotami) a treba mu priradit
hodnotu; no a 0 aj 1 sa daju reprezentovat vo vsetkych ostatnych
celociselnych typoch, takze tam je najmenej problemov pri konverziach.

wek

----- Original Message ---------------

Jeste jsem nad tim dumal a rikam si, proc je true dano jako 1? Jedine, 
co me napada, je kvuli porovnani, ale kdo by to delal?

Ziju v tom, ze ve drevnich dobach se definovalo FALSE 0 a TRUE !FALSE 
(nebo 1!=0 a 1==1) a pak se na vyhodnocovani pouzivaly jen 'kratke' ify 
a boolovska logika, proto mit TRUE definovano jako 1 neni vlastne k nicemu.

tj. kdo pise if( result == true ) vs if( result )?

J.



Další informace o konferenci Hw-list