Символьные литералы C / C ++ в системах ASCII и EBCDIC - PullRequest
2 голосов
/ 30 июня 2011

После прочтения спецификации PNG я был немного удивлен.Я читал, что символьные литералы должны быть жестко запрограммированы двоичными значениями, такими как 0x41, а не в (дружественном для программиста) 'A'.Кажется, проблема в том, что символьные литералы по-разному кодируются во время компиляции на разных системах с разными базовыми наборами символов. Хорошо, хорошо, я спросил друзей и прочитал стандарт C ++ (ISO / IEC 14882: 1998 / e), ноне получил / не нашел ответ, если разговор зависит от системы, которую я использую для компиляции, или это когда-либо фиксированный набор символов (например, ASCII)?

Спасибо за ваши ответы.

1 Ответ

4 голосов
/ 30 июня 2011

Версия, удобная для программиста, является единственным способом убедиться, что символьная константа 'A' правильно закодирована для целевой среды.Использование 0x41 гарантирует, что значение будет только 65.

Системы EBCDIC, к счастью, редки и становятся все реже, поэтому это различие довольно академично в некоторых отношениях.Однако понятные программы написаны осмысленно и максимально естественно.Не абстрактно.

...