C++-ban char típusú változóknak miért nem lehet üres '' kezdőértéket adni?
Mert a char pontosan egy karaktert tartalmaz, nem 0-t, nem többet.
Viszont rakhatsz bele 0-t.... (nem '0'-t, ami igazából 48)
Tehetsz bele String literalt is (""), ami egy lezart Stringet jelent.
(0, '\0', "" mind3 ugyanazt jelenti.)
Mert a char számokat tárol, méghozzá 1 byte-osokat.
Üres szám pedig nem létezik.
Talán így gondolta:
char c = ""[0];
char c = ""[0];
Hát ez aztán sokkal szebb és olvashatóbb, mintha azt írná, hogy
char c = '\0';
Tipikus gányoló programozó kód.
Arról nem beszélve, hogy ennek semmi köze az üres kezdőértékhez, sőt, okozhat igen szép meglepetéseket, ha ezt egy stringnek akarod később kezdőértékként adni...
Őőő. Ezt én írtam: char c = ""[0];
Egy-két dolgot látom hozzá kell tennem.
Valóban gány (csúnya, értelme sincs), de egy szóval sem mondtam, hogy így kell megoldani ezt a problémát, csak "ketteskét" javítottam, ugyanis így tényleg egy lezáró nulla kerül a char változóba.
Előző 2 válaszoló pedig kifejthetné, mi a baj ezzel, főleg az utolsó, mert egyáltalán nem mindegy, hogy melyiket írod (""[123456789]), az egyik biztosan valid memóriaterület, a másik meg nem. Azt se értem, hogy milyen meglepetést okozhatna, mivel ÉRTÉKÜL adja a c-nek a 0-t, egyebet nem csinál.
Megmagyarázzátok?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!