количество бит в char может быть разным и определяется макросом CHAR_BIT.
То есть в uint8_t вполне может быть 6 бит, если повезёт.
Правильно?
Он по стандарту минимум 8
signed/unsigned char
Нет. Есть Гарвардские архитектуры, где char 6 бит.
а откуда взялось sizeof(char) == sizeof(uint8_t)?
Если мы про стандарт говорим - sizeof(char) всегда 1(байт), а байт по стандарту это минимум 8 (возможно больше) За пределами стандарта естесна любую дичь найти можно
/// The following sizeof expressions always evaluate to 1: sizeof(char) sizeof(signed char) sizeof(unsigned char) sizeof(std::byte) (since C++17) sizeof(char8_t) (since C++20) /// https://en.cppreference.com/w/cpp/language/sizeof
Все uintX_t типы опциональны, только uint_leastX_t гарантированно есть. Соответственно если CHAR_BIT != 8, то uint8_t просто не будет определён
не вижу тут uint8_t
Упс... Вы правы! Обчитался char8 - uint8... Тогда чему равен sizeof(uint8_t) ??
Ровно 8 бит
:) sizeof(uint8_t) == "exact 8 bit" Congratulate you!
вообще выглядит как будто в большинстве случаев 1, но из стандарта не следует это, как мне кажется
Он либо 1, либо его нет
Очевидно, не менее 1.
Байт - это и есть char, по стандарту, а сколько в нём бит - дело десятое.
гарвардские архитектуры это не про это а вот на DSP char вполне может быть 16 или 32 бита
Обсуждают сегодня