количество цифр в шестнадцатеричном управляющем коде в C/C++

У меня есть спор с моим коллегой. Она говорит что следующее:

char* a = "\x000aaxz";

/ видны компилятором как "\x000aa". Я не соглашаюсь с нею, поскольку я думаю, что у Вас может быть максимальное количество 4 шестнадцатеричных символов после \x. У Вас может быть больше чем 4 шестнадцатеричных символа?

Кто прямо здесь?

16
задан Potatoswatter 29 June 2012 в 02:35
поделиться

2 ответа

§2.13.2 / 4:

Escape \ xhhh состоит из обратной косой черты , за которой следует x, за которым следует один или несколько шестнадцатеричных чисел цифры, которые используются для указания значения желаемого символа . Не существует ограничения на количество цифр в шестнадцатеричной последовательности . Последовательность восьмеричных или шестнадцатеричных цифр завершается первым символом, который не является восьмеричной или шестнадцатеричной цифрой соответственно.

Она права.

Тем не менее, вы можете прервать его раньше, используя активную цепочку: последовательность литералов "\ x000a" "axz" задает один строковый литерал из четырех символов. (2.13.4 / 3)

Также обратите внимание, что Unicode использует 21-битные кодовые точки ; он не останавливается на 16 битах.

30
ответ дан 30 November 2019 в 16:57
поделиться

Цитата из MSDN о символьных константах C ++:

Восьмеричные escape-последовательности, заданные в форме \ ooo, состоят из обратной косой черты и одного, двух или трех восьмеричных символов. Шестнадцатеричные escape-последовательности, заданные в форме \ xhhh, состоят из символов \ x, за которыми следует последовательность шестнадцатеричных цифр. В отличие от восьмеричных управляющих констант, количество шестнадцатеричных цифр в управляющей последовательности не ограничено.

из http://msdn.microsoft.com/en-us/library/6aw8xdf2.aspx

4
ответ дан 30 November 2019 в 16:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: