( persicsb | 2021. 04. 08., cs – 22:44 )

Szerintem te nem érted, hogy mit olvastál.

Pont azt mindja a 2.11, hogy vannak olyan kódszerkezetek, hogy egy adott változó (a példában a z) értéke az egy feltétel kifejezésétől függ (a példában a > b).

Azaz az if() két ágában ugyanúgy z kap értéket, csak az if() kiértékelésétől függően mást. És erre a kódmintára vezették be rövidítésként az operátort. Erre való a :?: operátor - egy adott változó értékének beállítása két értékre, egy logikai kifejezéstől függően.

 

És nem arra lett kitalálva, hogy tetszőleges kódot futtass. A példában sem az van, hogy az if() két ágában két tök külön dolgot csinálj. Hanem a cél az, hogy egy értéket képezzél. Ezért is a ?: kifejezés értéke felhasználható értékadásként (ez egy rvalue).

 

A K&R két szerzője pontosan tudta, hogy milyen esetekben eredményez jól olvasható kódot, szépen kinéző kódot a ?: használata - értékadáskor. És nem azért találták ki, hogy BÁRMILYEN if-et helyettesíts vele, ők ezt sehol nem mondják.