FlySnake писал(а): ↑09.09.2013 00:56
Немного оффтоп: есть ли в современном реальном мире машины где байт != 8 бит?
Как уже сказал drBatty вроде есть с 16-битными. Но не сталкивался с таким вживую. А с некратным 8 наверное только в истории остались.
drBatty писал(а): ↑09.09.2013 07:21
NickLion писал(а): ↑08.09.2013 14:50
А если char занимает, к примеру, 12 бит — сколько это байт в Вашем понимании? 1,5?
да.
Знаете, 1,5 байта — это мегастранно.
drBatty писал(а): ↑09.09.2013 07:21
А вы путаетесь потому, что char != байт. (:
В стандарте "байт" не определён, и является просто названием "минимально адресуемой памяти в большинстве реализаций". А вот char -- вполне определённая штука. Её размер всегда единица. Ну а её размер в байтах/битах -- не определён.
Ещё раз, в стандарте языка Си
говорится, что sizeof меряет размер информации в
байтах и sizeof(char)==1. Char (тип данных) — это не байт (размер данных), но имеет размер один байт.
Более того, байт в стандарте определён:
3.6
byte
addressable unit of data storage large enough to hold any member of the basic character
set of the execution environment
NOTE 1
It is possible to express the address of each individual byte of an object uniquely.
NOTE 2 A byte is composed of a contiguous sequence of bits, the number of which is implementation-
defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order
bit.
drBatty писал(а): ↑09.09.2013 07:21
это плохо. Если программист думает, что в char'е 8 бит (один "байт" по моему разумению), то быдлокод соберётся, и будет работать неправильно. Это куда как хуже, чем если использовать int8_t, с которым код не соберётся (и не должен).
Плохо то, что он так думает. И да, если нужен тип с
ровно 8 битами, то конечно надо использовать int8_t, а не char. А если нужно адресовать память минимальными единицами, то правильнее использовать char.