Portál AbcLinuxu, 7. května 2025 07:18
/* Handle error */
a pod ním return, který není v else větvi. Tady může kompilátor samozřejmě optimalizovat a celý blok vyhodit, pokud místo /* Handle error */
nebude např. return, nebo vyhození výjimky apod, protože uvidí, že výraz se vždy provede a proto může předpokládat, že podmínky nikdy nebudou vyhodnoceny jako true.
Tady je můj 7 let starý praktický příklad, co dokáže kód s nedefinovaným chováním, který si myslí, že znaménkový integer přeteče.
A ještě dnes se směju, jak tam někteří mírně až značně zakomplexovaní jedinci plácali v komentářích řeči ve stylu „jo, kdybys tak znal celý standard, a to bys tedy měl…“ Zkrátka, v každém jazyce jsou některé okrajové případy, které člověka dovedou překvapit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.