char
std::byte
char он ровно однобайтовый и ровно целочисленный. Все как тебе надо 😁
Чар не гарантированно однобайтовый. Пруфлинк: https://en.cppreference.com/w/cpp/language/types Цитаты: char - type for character representation which can be most efficiently processed on the target system [...] Note: this allows the extreme case in which bytes are sized 64 bits, all types (including char) are 64 bits wide, and sizeof returns 1 for every type.
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Не ври, всё обёрнуто
Тут это сто раз уже обсуждалось. Не гарантируется, что байт = 8 бит, а char как раз 1 байт
Он гарантированно однобайтовый. Это байт не гарантированно восьмибитный
> Чар не гарантированно однобайтовый. А ты смешной ))). Он гарантированно один байт. Не гарантируется, что в байте 8 бит.
А от чего это зависит? Какие бывают Extreme cases. Кстати, там написано, что байт может быть 64 битовым, чар также останется однобайтовым кажется. Сори если не по контексту
От железа, ОС, компилятора и его ключей. Если память не изменяет, то на VAX байт был 7-битный и char такой же. Но память уже и изменять может, очень давно это было. Теоретически и сейчас на каком специфическом железе такой может случиться. Посему, если точно 8 бит нужно, то int8_t или uint8_t. Если же просто массив в байтах на С++ для чего угодно, то std::vector<char> почти всегда достаточно.
Спасибо! просто написали, что чар не обязательно однобайтовый, хотя это не чар не однобайтовый, а байт не 8 битный)
Понятия байт может не существовать даже на какой специфике. Есть "слово", оно же "word". Типа того с чем процессор работает.
Кстати, получается bool в таких системах тоже 64 битами кодировались?)
Да. Но это вообще хитрый тип и, например, std::vector<bool> - жуткая штука. Юзать имеет смысл, если тебе этот вектор по битам распихать надо, но и соответсвенно тормознутый он сильно. Поэтому чаще юзают для булевого std::vector<int>. на всех системах int привязывают с слову процессора.
Хахахахаха. Win x86_64 с 4байт int передаёт привет
А привет то в чем? Я c виндой дел уже лет 10 не имею.
>на всех системах
И если память не изменяет, то 64 битные процессоры умеют хорошо и 32 интами работать - там типа специально для этого что-то делали.
Кстати и int8_t/uint8_t может не существовать на специфических платформах, где оно непредставимо. И вообще все эти вариации с фиксированной битовой длиной. Они помечены, как опциональные.
Обсуждают сегодня