secuencias numeros hexadecimales escape caracteres c++ unicode escaping

numeros - número de dígitos en un código de escape hexadecimal en C/C++



secuencias de escape en c pdf (3)

§2.13.2 / 4:

El escape / xhhh consiste en la barra invertida seguida de x seguido de uno o más dígitos hexadecimales que se toman para especificar el valor del carácter deseado. No hay límite para el número de dígitos en una secuencia hexadecimal. Una secuencia de dígitos octales o hexadecimales se termina con el primer carácter que no es un dígito octal o un dígito hexadecimal, respectivamente.

Ella tiene razón.

Sin embargo, puede terminarlo pronto por catenación impaciente: la secuencia de literales "/x000a" "axz" especifica un único literal de cadena de cuatro caracteres. (2.13.4 / 3)

También tenga en cuenta que Unicode utiliza puntos de código de 21 bits ; no se detiene en 16 bits.

Estoy teniendo una disputa con un colega mío. Ella dice que lo siguiente:

char* a = "/x000aaxz";

El compilador puede ver / puede "/ x000aa". No estoy de acuerdo con ella, ya que creo que puedes tener un número máximo de 4 caracteres hexadecimales después de /x . ¿Puedes tener más de 4 caracteres hexadecimales?

¿Quién está aquí?


Bueno, para el caso, la secuencia de escape hexadecimal termina en un carácter no hexadecimal, por ejemplo, / x0abc9k es 0abc9 en hexadecimal y luego ''k'', por lo que para finalizar una secuencia hexadecimal, tendrá que usar comillas dobles dos veces al final. por ejemplo, / x0ab "" c9k, que toma solo 0ab como hexadecimal

o alternativamente, podría usar la secuencia de escape octal ya que hay un límite para los números en la secuencia de escape octal, por lo que solo habrá un máximo de tres dígitos octales. por ejemplo, / o1234 es 123 en octal y luego ''4''

Entonces, sí, ella tiene razón.


Cita de MSDN en constantes de caracteres C ++:

Las secuencias de escape octales, especificadas en la forma / ooo, consisten en una barra invertida y uno, dos o tres caracteres octales. Las secuencias de escape hexadecimales, especificadas en la forma / xhhh, consisten en los caracteres / x seguidos de una secuencia de dígitos hexadecimales. A diferencia de las constantes de escape octales, no hay límite en el número de dígitos hexadecimales en una secuencia de escape.

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