pointery C
Pavel Hudecek
edizon na seznam.cz
Středa Květen 22 10:26:13 CEST 2013
Vyjádřil jsem se trochu nepřesně. On může mít více částí, pokud to na dané
platformě má smysl. Např. segmentovou a offsetovou. No a o té offsetové jsem
si myslel, že by měla být shodná s intem. Ale jak se zdá, je to ještě
složitější, protože int smí mít jen 16, nebo 32 bitů.
Ale v nížeuvedeném pokusu mě hlavně poněkud zaskočilo, že long má 8 B.
Jsem v každém případě zvědav na případné podrobnější vysvětlení. Našel jsem
k tomu jen výsledek, bez podrobností:
Můžete se spolehnout je na to, že velikost char = 8 bitů (= 1 byte) a že:
sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long).
PH
From: "Ladislav Vaiz" <spam na nagano.cz>
Normu jsem nečetl, třeba k tomu Jano nebo Ced dodají něco zajímavého,
ale v praxi to není pravda, viz Debian AMD64:
checking size of char... 1
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking size of void *... 8
Pavel Hudecek napsal(a):
> To je nějaké divné. Pointer by měl být vždy int, ať už ukazuje na cokoli.
> Int je právě tak definován: Typ určený k adresování na dané platformě,
> akorát navíc se znaménkem. Proto má na různých platformách různý počet
> bitů.
>
> Ale třeba je to v Hitecu jinak.
Další informace o konferenci Hw-list