четверг, 21 июля 2016 г.

sizeof(char) is always 1

По стандарту sizeof(x) даёт размер в байтах ("в логических байтах языка Си"), и sizeof(char) всегда 1. Таким образом, размер чара всегда один байт ("один логический байт языка Си").
Размер чара в битах (и, следовательно, размер байта в битах) определён в limits.h (макро CHAR_BIT), и составляет по крайней мере 8 бит. Компиляторы для "малобитных" машин (на железном уровне бывает и 6, и 7 бит на байт, что бы ни называли байтом на железном уровне) имеют "логический" байт подходящей длины, все остальные типы имеют в битах длину, кратную длине "логического" байта.
POSIX требует 8 бит на байт, но в общем бывают чипы по 9, по 12 "железных" бит, Texas Instruments делают в том числе 16 и 32 бита на байт.
Наконец, по стандарту IEEE 1541 байт - это группа соседних битов, которые участвуют операциях группой, а 8 бит - это октет (octet). В то же время по ISO/IEC 80000-13 байт - это восемь бит.
Приятного вам деления на два, котятки.

Комментариев нет:

Отправить комментарий