Bezdepbonusu7Программирование: статьи и ответы

Вопрос

При приведении типа к символу в C, какие байты используются для создания символа?

Автор вопроса: MattОтветов: 2

Когда вы приводите тип из int в char, вы сокращаете количество используемых байтов с 4 до 1. Как он выбирает, какой байт он собирается использовать для создания char?

Требуется ли старший байт?

Или берет наименее значимый?

Или есть какое-то правило, о котором я должен знать?

  • Могу поспорить, что это поведение undefined, но не верьте мне на слово. Falmarri 06.02.2011
  • ЛСБ конечно. Endianness не имеет значения. Hans Passant 06.02.2011

ccastingchar

Ответы

Ответ 1 · рейтинг 5 · templatetypedef

C будет брать младший байт при выполнении сужающего преобразования, поэтому, если у вас есть целочисленное значение 0xCAFEBABE и вы конвертируете его в char, вы получите значение 0xBE.

Конечно, нет реальной гарантии, что int - это четыре байта или что char - это один, но я почти уверен, что логика выполнения усечения всегда будет одинаковой и просто отбросит старшие биты, которые не нужны. не вписывается в char.

Ответ 2 · рейтинг 2 · R.. GitHub STOP HELPING ICE

Если char подписано, оно определяется реализацией, если исходное значение уже не соответствует диапазону значений для char. Реализация совершенно свободна генерировать чепуху (или поднимать сигнал), если она не подходит. Если char не имеет знака (что разрешено стандартом), то значение уменьшается по модулю 1<<CHAR_BIT (обычно 256).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы