Сказано. А также там сказано, что каждый целочисленный тип имеет
некоторое ограничение снизу на число представляемых им значений,
см. 5.2.4.2.1 Sizes of integer types <limits.h> в стадарте ISO C99.
В частности, из того, что ULLONG_MAX >= 2^64-1 следует, что
unsigned long long должен быть как минимум 64-битным.
>Не забывай, что в стандарте не сказано, чему равен байт. Он может быть и меньше, и больше восьми бит.
Меньше восьми бит он быть не может, см. секцию
«2.2.4.2 Numerical limits» стандарта ANSI (http://flash-gordon.me.uk/ansi.c.txt), также см. «5.2.4.2.1 Sizes of integer types <limits.h>» в стадарте ISO C99
байт — может. стандарт си не может влиять на архитектуру процессора. а вот размер char — не может, да. но кто сказал, что чар должен быть ровно один байт? ;)
>байт — может. стандарт си не может влиять на архитектуру процессора.
Ты можешь, конечно, создать компьютер с семибитным байтом,
но эти байты нельзя будет использовать в реализации С
как байты в смысле языка С. Вот цитаты из
«5.2.4.2.1 Sizes of integer types <limits.h>» ISO C99:
— number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
The value UCHAR_MAX shall equal 2^CHAR_BIT − 1.
Из этого можно заключить, что unsigned char должен занимать ровно 1 байт и содержать не менее 8 бит. Поэтому тебе придется в C использовать в качестве «байтов» двухбайтные (14-битные) слова, либо нарушать стандарт.