C kreténség - kifejezés a bal oldalon
bullet Crystal -- 2009-08-28
A probléma tárgya a következő értékadás:

(a ? b : c) = 5;

Tehát az értékadás bal oldalán egy feltételes kifejezés szerepel. Első ránézésre elég furcsa, de végülis van értelme, és mivel a kifejezés eredménye mindenképp egy változó lesz, ezért akár le is lehetne fordítani. Sőt, ennek alapján a gcc-nek le is kellene fordítania, de nem teszi.

Egyébként a szerkezet gyakran hasznos tud lenni, sokszor jó lett volna már, pl. gondoljunk egy bináris keresésre. Adott esetben még némi memóriát/sebességet is meg lehet spórolni vele. Ha mégis ilyet szeretnénk csinálni, akkor írhatjuk így:

*(a ? &b : &c) = 5;

Kicsit nyakatekert, de működik. Olvashatóság szempontjából persze nem a legjobb... :)