Kezdőoldal » Számítástechnika » Programozás » A c/c++ const változók fordítá...

A c/c++ const változók fordításkor konstansként kerülnek a kódba, vagy futáskor értékelődnek ki?

Figyelt kérdés

Tehát mondjuk van egy ilyen kódrészlet:


int fg() {

const int i = 10;

return i+1;

}


Itt az "i+1" kifejezés futáskor értékelődik ki, vagy a fordító már eleve a 11 literált fordítja a kódba?

Köszönöm!



2013. júl. 12. 13:11
 1/3 anonim ***** válasza:

"An integral constant-expression can involve only literals of arithmetic types (2.13, 3.9.1), enumerators, non-volatile

const variables"


nekem ebből az jön le, hogy az const+literál lehet literál (nagy valószínűséggel az is lesz), de nincs megszabva


de még valaki javítson ki, biztos van konkrét válasz is

2013. júl. 12. 13:31
Hasznos számodra ez a válasz?
 2/3 iostream ***** válasza:

Amennyire rémlik egy fordítási idejű konstans nem kap saját tárterületet, csak ha elkéri valaki a címét. Tehát az i használata megfelel annak, mintha a 10 literált írnád be oda, és 10 + 1 meg szabvány szerint fordul 11-re. Azt meg hogy a szabvány pontosan mit mond, derítsd ki valamelyik ingyenes draftból.


Másik eset ha a const változó nem fordítási idejű, tehát pl

void f(int a)

{

const int orig(a);

}

2013. júl. 12. 13:41
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

Értem, tehát akkor a fenti egyszerű esetben nem foglalódik hely az i-nek, és a kifejezést is a fordító értékeli ki.

Köszönöm! :)

2013. júl. 12. 14:14

További 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!