Ha egy 4 elemű tömbnek csak az első 3 elemébe teszek értéket, akkor az miért van, hogy a fordító véletlenszerűen a tömb típusát figyelembe véve tesz bele egy értéket a tömb 4 elemébe?
Példa:
unsigned short myArray[4] = {10,20,30};
A ki íratásnál megfigyelhetjük,hogy a tömb utolsó elemébe sosem kerül nagyobb vagy kisebb érték mint amit a tömb típusa tárolni tud.Ez miért van.És nektek is így működnek a tömbök vagy csak véletlen egybeesések sorozatát éltem át?
Nektek is komolyan véletlenszerűen kerül bele olyan érték amit a tömb tárolni tud?
Nem tesz bele semmit a fordító, egyszerűen csak kap egy memóriarészt, ami annyi byte, amibe belefér a 4 db short. A kapott memóriát nyilván egy másik program használta előtte, ami benne hagyta az értékeket, akármi is volt az. Ezért, hacsak nem írod felül valamivel, akkor az ott talált értéket fogja használni a programod.
Nincsenek véletlen egybeesések, van egy 2 byte-nyi adatod (általában ennyi a short), amiben teljesen véletlenszerű adat van (legalábbis a te szempontodból véletlen, egy másik programnak az hasznos adat volt), ami akármi lehet, mert mindenhogy ki lehet belőle olvasni egy számot.
Szabvány szerint, beépített típusnál a tömbelemek alapból inicializálatlanok, saját típusnál default-konstruáltak.
Ha írsz egy nem teljes inicializáló listát (nem teljes azt jelenti, hogy kevesebb elemet adsz meg, mint amilyen hosszú a tömb), akkor a maradék elemeket default konstruálja, beépített típusoknál.
Tehát neked minden esetben 0-t kéne kapnod a 4., hármas indexű elemre.
Amúgy ez nagyon durva:
"A ki íratásnál megfigyelhetjük,hogy a tömb utolsó elemébe sosem kerül nagyobb vagy kisebb érték mint amit a tömb típusa tárolni tud."
Komolyan az érződik, hogy nem érted ezt a dolgot. Amikor leírod azt, hogy myArray[3], akkor egy short méretű területet címzel meg, és shortként is kezeled. Hogy is lehetne azon a területen nagyobb (vagy kisebb, az ugyanazt jelenti kettes komplemensű ábrázolással) érték? Nem fér el, és ha el is férne, a típuskényszerítés miatt akkor is végbemenne a narrowing.
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!