cas a 32-bit platformy

Ing. Miloslav Ponkrác postovni.holub na atlas.cz
Čtvrtek Červen 15 10:12:35 CEST 2000


>Muzete prosim jmenovat nejaky ANSI-compliant kompilator, kde by
>velikost promenne char _nebyla_ jeden byte? Rad se poucim.


Pokud nezvednete oči z platformy procesorů x86, tak ho neuvidíte. Ale třeba
v první knize, která byla napsána o C, a kterou všichni nejspíše znáte: "The
Programming Language C" od Ritchieho je někde v prvních kapitolách uveden
příklad počítače i s jeho jménem, kde char měl 9 bitů.

Uvědomte si také, že C se používá na všem možném, nejenom na x86. Na různých
jednočipových procesorech, kde se v C programují řídící jednotky, nebo třeba
moduly rozpoznávání řeči, apod. Existuje spousta procesorů,  které nemusí
mít zrovna 8 bitů na char. Potom je tomu přizpůsobená i délka char, protože
char je podle normy nejmenší možná adresovatelná jednotka paměti. Což je
přesná definice pro typ char, nikde v normě nemáte napsáno, že char rovná se
jeden bajt. Zkuste mi, prosím dokázat opak, a z normy mi ukázat, kde je
psáno, že je to jinak.

Zejména dříve byly vytvářeny myriády různých procesorů, a seriózních
počítačů, a u některých z nich char rozhodně 8 bitů neměl.

Takže závěr je ten, že to není věc ANSI kompilátoru, ale jedině a pouze
procesoru, který určuje, jak dlouhý je char. Druhá věc je, že dnes obvyklé
procesory přistoupili na to, že char bude 8 bitů, což je správné. Ale
stoprocentně se s tím nedá počítat. Správně měla Vaše otázka znít: "Můžete
mi jmenovat procesor, kde by ..."

Pokud si přečtete zmiňovanou knihu od Ritchieho, tak tam najdete i to
upozornění, že velikost char nemusí být 8 bitů, a je tam i tabulka, kde je v
jednom sloupci procesor, a ve druhé počet bitů pro typ char. Dává se tam
tomu dost prostoru, a jasněji to tam být napsané nemůže. A tato knížka je
klasika, kterou na internetu najdete i v češtině, nebo slovenštině. Stačí do
libovolného vyhledáváče zadat řetězec cbible.

Miloslav Ponkrác







Další informace o konferenci Linux