Kezdőoldal » Számítástechnika » Programozás » C++ nyelvben van-e bármi...

C++ nyelvben van-e bármi különbség a kezdőértékadás és a definiálás utáni azonnali értékadás között?

Figyelt kérdés
Tehát egyenértékű-e ez: int a = 0; ezzel: int a; a = 0; Bármilyen tekintetben, optimalizáció szempontjából, vagy ilyesmi.

2020. dec. 6. 21:15
 1/6 anonim ***** válasza:
100%

Őszintén megmondva, azt hittem, van különbség, de nem hagyott a kiváncsiság.

Szóval betettem egy assembly generátorba, és totál egyforma kódot generál belőle a fordító.

2020. dec. 6. 21:52
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
100%

Én nem próbáltam, de igen, valószínűleg egy modern fordító ezt már optimalizálja.

Egy régebbi, kicsit "butább" fordítónál még lenne különbség, mármint lokális változók esetén.

int a = 0; // push 0

int a; a=0; // SP decr.; [SP] <-- 0

2020. dec. 6. 22:14
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
0%

Van különbség, méghozzá jelentős, csak int típusnál nem jön elő. Az első változatban [int a = 0;] az intet váró konverziós konstruktor fut le, míg a másodikban [int a; a = 0;] a paraméter nélküli konstruktor és az egy int paraméterű értékadás operátor. Ha ezek kódja különböző, akkor a lefutásuk utáni eredmény is lehet különböző; illetve ha valamelyik nem létezik, akkor az a változat le sem fordul.

Nyilván int típusnál mindhárom létezik és ugyanazt az ereményt produkálja.

2020. dec. 7. 01:31
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Az optimalizáció szintjén is múlhat?
2020. dec. 7. 12:03
 5/6 anonim ***** válasza:

#3: alaptípusoknál nincs konstruktor, tedd be egy gcc-be, és nézd már meg a generált kódot...

Szólj ha bármilyen konstruktort vagy konverziót látsz, mert akkor indulok a szemészetre

2020. dec. 7. 17:00
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

"Az optimalizáció szintjén is múlhat?"

Ez már a konkrét fordítótól függ, hogy mennyire skálázható, paraméterezhető. Nem kizárt, hogy van olyan optimalizációs szintjük, ahol megjelenik a különbség.

2020. dec. 8. 13:25
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!