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