Mi a különbség c-ben aközött, ha egy int értéke "a" vagy 'a'?
"a" egy karakter hosszú string, tömb {'a', '\0'}
'a' a karakter ascii kódja
"alma" létezik, 'alma' nem.
Na. Természetesen lehetséges intben hosszabb szöveget tárolni, de ez teljességgel rendszer, implementáció és egyébként függő. Ha maradunk a normál 8 bites karaktereknél, és neked mondjuk van 32 bites inted, akkor 4 karakter épp elfér benne, tehát az alma elfér. Ki is próbálhatod:
char* almaPtr("alma");
int almaInt(*(int*)almaPtr);
int masikInt = almaInt;
fwrite(&masikInt, 1, 4, stdout);
Annyira egyébként nem. Tudjuk, hogy a karakterek egymás után jönnek, tudjuk, hogy minden típus a char méretének többszörösét foglalja el. Tudjuk, hogy az int többnyire az a méret, amivel a gép a leggyorsabban tud számolni.
Szövegek összehasonlításakor nagyon hatékony tud lenni egy ilyesféle, a szöveget nagyobb számok sorozataként kezelő megközelítés.
Az erőszakolás ott jöhet be, ha például int csak bizonyos, például 4 byte-os határokon lehet, char meg nem rendelkezik ilyen korlátozásokkal, és emiatt a mutatózás nem működik esetleg.
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!