Mit jelent ez a C++os kifejezés?
Ebben a kódban
char t='a';
std::cout << (int) t;
mit jelent az (int) és mikor lehet az ilyen zárójeles kifejezéseket használni? azt tudom hogy ez a két sor annyi hogy kiíratja az 'a' karakterkódját, szóval itt valami char->int konvertálás történik, vagy pontosan mi?
Ezt hívják "cast"-olásnak. Ezzel a módszerrel éred el, hogy a fordító mostantól az adott változót az általad jelzett (most int) típusként használja. Használatánál körültekintőnek kell lennie.
A jelen példában létrehozol egy karakter típust, aminek a típusát a kiírás előtt egész számmá változtatod. Mivel a karaktereket alapból számként tárolja, ezért semmilyen adatvesztés nem történik itt. Más esetben előfordulhat.
(típus) a C-stílusú kasztolás, azaz típuskonverzió szintaxisa. Nem szép, ne használd. Helyette static_cast<int>(t) ebben az esetben. Hosszabb, de sokkal jobb gyakorlat (részben épp azért, mert hosszabb).
És nem azért nincs adatvesztés, mert a karaktereket is számként tároljuk, hanem mert az int mindig nagyobb egész, mint a char, mivel legalább két char-nyi (a C++-ban a típusok méretének az alapegysége a char, minden típus a char méretének egész számú többszörösét foglalja).
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!