Kezdőoldal » Számítástechnika » Programozás » Hogyan kerülhető el a "c++...

Hogyan kerülhető el a "c++ warning: operation 'változónév' on may be undefined" hiba?

Figyelt kérdés

Mivel nem találtuk meg, hogy hol romlik el egy konvertálás, így ideiglenesen úgy döntöttünk, hogy kézzel megjavítjuk az értéket (hozzáadunk 1-et, és leosztjuk négyharmaddal), igen, ez csúnya megoldás, de most hirtelen jó lesz (tehát ne ezt firtassátok a válaszban). A lényeg, hogy miért nyafog a fordító, hogyha 0 marad az érték? Tudom, sok helyen azt javasolják, hogy a hamis ágban legyen -1, de az meg azért nem jó, mert akkor a következő vizsgálatnál bonyolultabb lesz a kód, mert azt is kell vizsgálni, hogy 0 vagy esetleg -1-e az érték. Ötlet?

relDistance = relDistance ? (++relDistance *=3) /= 4 : 0;



#C++ #ternáris operátor
2018. szept. 21. 10:18
 1/5 anonim ***** válasza:

Erre a sorra írja a hibát? És mi az a 'változónév'? Átírtad vagy így írja ki a hibát?

Egyébként direkt van túlbonyolítva ez a "hozzáadunk 1-et, és leosztjuk négyharmaddal"? Ez nem lenne jobb:

relDistance = relDistance ? (relDistance + 1) * 3 / 4 : 0;

?

2018. szept. 21. 10:34
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
Van kezdőérték beállíva a változónak?
2018. szept. 21. 11:03
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Igen, van kezdőértéke.

int relDistance = nLineWidth ? aLineDash.Distance / nLineWidth : 0;

Fenébe is, erre nem is gondoltam, hogy ha volt már egy egyenlőségjel, akkor ezzel így (++,*=,/=) mégegy (illetve még 3) lesz :D

Köszi!

2018. szept. 21. 12:00
 4/5 A kérdező kommentje:
Tehát szerintem az volt a baj, hogy ha változónév = ternáris operátoros kifejezés. Akkor a ternáris operátoros kifejezésben kifejezések (azaz expressionök) legyenek, ne pedig utasítások.
2018. szept. 21. 12:24
 5/5 anonim ***** válasza:
Arra panaszkodik, hogy relDistance = ++relDistance, ez pedig undefined behavior, függetlenül attól, hogy logikailag van értelme. Ezért kapsz rá warning-ot.
2018. szept. 24. 10:30
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!