Sizeof(char)

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2015

Читаю сейчас на хабре эту статью. Там говорится следующее:

char — это всегда ровно один байт и во всех стандартах C и C++ sizeof (char) == 1 (но при этом стандарты не гарантируют, что в байте содержится именно 8 бит :))

Я слышал об этом и раньше, но всегда не мог понять, в чем смысл того, что в байте может быть не 8 бит? Наверное, это где-то действительно есть, но зачем это нужно? В чем необходимость, что в байте может быть 7 или 9 (или сколько там еще) бит, и не создает ли это больше проблем, чем пользы?

Ответы

▲ 5Принят

Приведённая цитата - скорее, историческая ремарка, чем реальное предупреждение. В старых (очень старых) архитектурах процессоров использовались и 7-битные, и 6-битные, и даже 32-битные байты. Ранняя версия ASCII была семибитной, также существовала семибитная версия КОИ. Но со временем стандартом де-факто стал восьмибитный байт, так как процессорам было проще оперировать величинами, чей размер выражался степенью двойки (8 = 2^3). Позже размер байта в 8 бит был закреплён стандартом IEC 80000-13.