Kezdőoldal » Számítástechnika » Programozás » C++-ban a stringliterálok sem...

C++-ban a stringliterálok sem tárolódnak el a memóriában, hanem a processzor közvetlenül megkapja ezeket az értékeket, vagy ez az állítás csak az egyszerű típusú literálokra igaz?

Figyelt kérdés

#literál #stringliterál
2017. júl. 29. 16:01
1 2
 1/12 anonim válasza:
100%
Dehogy igaz.
2017. júl. 29. 16:04
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
100%
Semmilyen literálokra nem igaz.
2017. júl. 29. 16:04
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
A processzor nem tárol semmit, az utasításokat végez. Természetesen a literálok is, mint minden adat a memóriában tárolódik, a különbség, hogy ezeket gyakran 'read-only' szegmensekre helyezik, mivel az itt tárolt adatok nem fognak változni (természetesen itt read-only alatt nem tényleges ROM-ot kell érteni, csak olyan memóriaszegmenst, ahova nem változó adatot töltenek be). Szóval de, a string literálok a memóriában tárolódnak, ahogy minden literál.
2017. júl. 29. 17:24
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Ez olyan szempontból érdekes, hogy egy tanárom elmondása szerint a literálok nem const valami típusúak, hanem const nélküliek. De mégis úgy viselkednek, mint a const típusminősítővel ellátott változók? Vagy miben különböznek tőlük?
2017. júl. 30. 22:15
 5/12 anonim ***** válasza:
Const típusminősítővel ellátott változó nincs. Ami const, az konstans. Namost nem egészen értem a tanárod mégis mit akar mondani, de a literálok nagyonis konstansok, sőt, leginkább a static const adattagokhoz hasonlíthatóak. A program futásának elején betöltődnek a memóriába, és a program futása végén kerülnek felszabadításra.
2017. júl. 30. 23:44
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:

Akkor ezen állítás nem igaz?


A változókban el nem tárolt értékek nem minősülnek konstansnak, ha egyszerű típusokról van szó.

Például:


a return 0; utasításban a 0 literál valójában int típusú (nem pedig const int típusú)

a cout << "pi erteke: " << 3.14 << endl; utasításban a 3.14 literál double típusú

a cout << 5 / 2; utasításban az 5 / 2 művelet eredménye (2) int típusú

a cout << 5 / 2.0; utasításban az 5 / 2.0 művelet eredménye (2.5) double típusú

forrás: [link]

2017. júl. 31. 10:47
 7/12 anonim ***** válasza:
Nem egészen értem mire akar kilyukadni. A literál az literál. Máshogy tárolódik, máshogy kezelődik, mint gyakorlatilag bármi más. De a elgtöbb szempontból úgy viselkedik, mint egy static const adattag. Ennek a 'const, nem const' gondolatmenetnek szerintem nincs sok értelme. A literál rvalue, immutable. Mint a konstansok. Függvény paraméterként referencia szerint csak const reference-ként adható át. Mint. A. Konstansok. Szóval nem igazán értem, mire gondolt a tisztes szerző. Maradjunk annyiban, hogy a literál az literál, és pont.
2017. júl. 31. 19:36
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:

A lényeg az, hogy a literálokat és a const típusminősítővel ellátott "változókat" (konstansokat) egyenértékűnek tekinthetjük?

Egyébként a műveletek eredménye is literál? Pl. cout << 5 + 5 << endl;

2017. aug. 2. 15:56
 9/12 anonim ***** válasza:
Ha a kódban 5 + 5 szerepel, akkor azt a legtöbb fordító élből kioptimalizálja 10-re. Egyébiránt ugyanolyan lenne az eredmény, mint bármilyen művelet eredménye.
2017. aug. 2. 21:06
Hasznos számodra ez a válasz?
 10/12 Hominida ***** válasza:
A konstans nem típus, hanem valójában egy utasítás a compilernek arra, hogy a kódban levő ilyen nevű adatokat az itt megadottal helyettesítse. Beírhatnád az összes helyre magát az értéket, de önálló konstans definiálásával megteremted az egyszerű megváltoztathatóságát, ennyi az előnye.
2017. aug. 2. 23:38
Hasznos számodra ez a válasz?
1 2

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!