A c/c++ const változók fordításkor konstansként kerülnek a kódba, vagy futáskor értékelődnek ki?
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!
"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
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);
}
É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! :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!