Cos mi sie wlasnie przypomnialo..
Kiedys przeczytalem gdzies baardzo ciekawa dyskusje na temat wielkosci standardowych typow danych. Powszechnie przyjelo sie ze char=1bajt, int=2lub4, long=4b itd. Ale, podobno standard C/C++ wcale nie definiuje tego, nigdzie nie ma zadnego zalozenia ze takie wlasnie rozmiary sa 'wymagane'. Podobno wszystko zalezy do sposobu adresowania pamieci na danej maszynie..
Wnioski jakie zapamietalem z tej dyskusji byly mniejwiecej takie, ze z punktu widzenia standardu jezyka:
- char to nie jest jeden bajt. char to jest najmniejszy adresowalna bezposrednio komorka/blok pamieci. zwykle to 1 bajt, ale na niektorych maszynach moze to byc 16 lub wiecej bitow
- sizeof(char) zawsze zwraca 1, nawet jesli zachodzi wyzej opisane
- sizeof(X) zwraca rozmiar typow danych w kontekscie wielokrotnosci char'a. sizeof(X)==4 nie oznacza 4B tylko 4*char, patrz wyzej
czy ktos moze mial kiedys do czynienia z tekim przypadkiem? tzn. ze char byl defacto wielobajtowy? ciekawi mnie rowniez przypadek odwrotny - przeciez na mocy takich zalozen rownie dobrze CHAR w procku jakiegos zegarka na reke moglby miec tylko 4bity (mapowane nie na zestaw ASCII tylko np. na 0123456789:-(/)# )? ktos moze kiedys sprawdzal jak to dokladnie jest okreslone? :)