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... :)
/* */ kommentek
erdeszt (2009-06-22)
Kicsit utána olvasgattam a szabványban hogy mi hogy történik és azt írták hogy annak az ágnak amelyre a feltétel után jut, kifejezése kiértékelődik, tehát a változó értéke behelyettesítődik(szerintem) ezért nem fog menni csak is a "trükkös" módon.
És szerintem a az IBM oldalán lévő manualt is félre értetted mert ott is csak azt írják, hogy: "This extension is available when compiling in one of the extended language levels."
(Bár ott más alternatívát ajánlanak ("(a ? b = 5 : (c = 5)")).
Crystal (2009-06-22)
jah, vagy úgy:) azt a sort nem olvastam el
Shermaine (2011-11-30)
Aprpecitaion for this information is over 9000—thank you!
noitxzfnow (2011-12-01)
cLLD2f <a href="http://swupfgtggzup.com/">swupfgtggzup</a>
gfnhkydaxw (2011-12-01)
jVBIPG , hqmmulnxaxie, [link=http://grmwkegiqryc.com/]grmwkegiqryc[/link], http://nhmsxmtxkrvb.com/
Új komment:
név:
email:
website:

Captcha



megjegyzés