переполнения, что есть undefined behavior, а это значит, что может произойди всё, что угодно.
Дошло, спасибо)
Ну я жестко тупил с этого
Нет там никакого UB, и быть не может
Запись числа 192 в знаковый char, у которого наибольшее положительное 127, это не UB?
это как минимум тупо, есть же u_char
а где это ? я не видел такого
u_char - это не char
это 8 бит, этого вполне достаточно. А потом уже явно касти себе на здоровье Ещё же бывает std::byte 👌
Никто не гарантирует(даже стандарт), что у signed char наибольшее положительное 127
https://t.me/supapro/1333494 У него переменная типа char. Знаковость char стандарт не определяет, может быть как signed, так и unsigned. Когда он записывает в эту переменную 0x0F (15), в консоли выведется такое же значение, но когда он записал 0xC0 (192), что больше 127, значение стало выводиться отрицательное.
Это к тому, что его размер >= 1 байта?
В его случае printf("%X", ch); //FFFFFFC0
Нет, к тому, что байт может быть семибитным. Но что в том, что в том случаях sigidness - это лишь абстракция над байтами
Ну, должно получиться ровно такое же число в 10ой
нужен байт? Используй std::byte
А Си/++ есть только на этих архитектурах?
вот он и попался, разжигатель срача
Вот поэтому я и писал предыдущие сообщения. Записал в char 192, а на выходе получил 4'294'967'232, странно.
а на какой архитектуре твой пк? На арме чар из 7 бит?
Нет, на арме чар не из 7 бит. Стандарт не гарантирует восьмибитность байта, но при этом гарантирует однобайтность char
в этом моменте самое странное - выводить в консоль чар, и даже std::hex + статик каст к инту не использовать. Понятное дело что сломалось из-за знака
Вот она истинная причина).
так, мы присвоили чару 0b1111'1111, какое отношение к этому имеет то, что байт Может быть не из 8 бит. Да даже 1 бит, можно любой компилятор написать самому. Ты конечно молодец, умный безгранично
а я тебя переиграл, использую как конченый uint8_t, из-за таких как ты
Так мало ли что можно байту присвоить? char kek = 0x1337; Просто преобразует int в char через type narrowing
Ты глянь typedef uint8_t 😁
Обсуждают сегодня