Az ANSI-C szabványban meg van határozva, hogy egy integer hány bites?
@jóska
Még ez sem igaz.
@K
Nagyon jó kérdés. Nincs. Csak az egyes típusok közötti reláció.
Nincsenek függvénykönyvtáraim, mivel egy mikrokontrollerhez tartozó fordító kapcsán lettem erre kíváncsi.
Ott ugyanis, mint kiderült, egy integer 2 byte-os előjeles, de elvileg mégis pontosan követi az ANSI-C szabványt, és amit az ANSI-C-ben lehet, azt elvileg azon a kis chippen is.
Szóval ezért kérdeztem, hogy a kettő nem ellentmondásos-e.
De amúgy - OFF - azt így nem értem, hogyha egy integer 16 bites, akkor hogy tud ott a feldolgozóegysége 64 Kilobyte memóriát megcímezni? (a dokumentáció szerint annyi a Flash memória mérete, a RAM-é csak 1 KB)
Úgy, hogy elképzelhető, hogy nem integert használ a Flash memória megcímzéséhez...
Egyébként az integer mérete mindig "fix", sizeof(int).
Amit lehet tudni, hogy:
sizeof(char) <= sizeof(int)
Igazából ha úgy akarod használni, hogy több architektúrát is támogasson a programod, amelynek mondjuk 16 vagy 32 bites integerjei vannak, akkor kénytelen leszel egy olyan library-t használni, amely ezeket megvalósítja.
C90-ben viszont elvileg meg tudod ezt tenni:
typedef unsigned long uint32_t ;
Igy az unsigned long típus 32 bites lesz.
"Úgy, hogy elképzelhető, hogy nem integert használ a Flash memória megcímzéséhez..."
Szóval akkor nem attól 16 bites egy integer, mert maga a processzor is az?!
Mert PC-n ez általában így van tudtommal. Ahány bites egy processzor, anyi bithosszú számot is tud kezelni. Vagy nem?
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!