secuencias escape c char escaping

escape - ¿Qué significan los caracteres que comienzan con ''/' y seguidos de un número, por ejemplo ''/ 234''?



secuencias de escape en "c++" (4)

Es una secuencia de escape, para valores octales. La sintaxis es /nnn .

Puedes leer más sobre las secuencias de escape en c aquí .

La basura está impresa, porque 233 en octal es 155 en decimal, 234 es 156 y 235 es 157. No representan ningún carácter ascii.

He estado buscando el origen de una aplicación cuando encontré estos caracteres, por ejemplo, ''/233'', ''/234'', ''/235'' y cuando los imprimo, obtengo caracteres de basura.


Son secuencias de escape octal s, que se utilizan para representar valores de bytes específicos en una constante de caracteres o literal de cadena.

C11, 6.4.4.4 Constantes de caracteres :

character-constant: '' c-char-sequence '' L'' c-char-sequence '' u'' c-char-sequence '' U'' c-char-sequence '' c-char-sequence: c-char c-char-sequence c-char c-char: any member of the source character set except the single-quote '', backslash /, or new-line character escape-sequence escape-sequence: simple-escape-sequence octal-escape-sequence hexadecimal-escape-sequence universal-character-name octal-escape-sequence: / octal-digit / octal-digit octal-digit / octal-digit octal-digit octal-digit

Una secuencia de escape octal se define como una barra invertida seguida de uno a tres dígitos octales (0-7).

Para evitar que se interprete el siguiente dígito decimal como parte de la secuencia octal, es una práctica común rellenar una secuencia de escape octal con ceros a la izquierda. Sin embargo, a diferencia de las constantes de entero octal, no se requiere un cero inicial .

Tenga en cuenta que el significado semántico de dicha secuencia de escape depende del contexto. Podría escribir "Fu/303/237" , y podría significar "Fuß" (en UTF-8) o "Fuß" (en CP-1252), dependiendo de en qué codificación esté suponiendo que esté la secuencia. Lo que no puede hacerlo, portablemente, está escribiendo cualquiera de esas cadenas en la fuente directamente, porque la interpretación de cualquier carácter que no esté en el juego de caracteres de origen (es decir, ASCII-7 sin dólar, signo y retroceso) está definida por la implementación . Si bien la mayoría de los compiladores actuales pueden interpretar literales de cadenas como UTF-8, las secuencias de escape octal son el modo portátil.

FWIW, también hay secuencias de escape hexadecimales ; sin embargo, no están tan bien definidos: engullen codiciosamente tantos "dígitos hexadecimales" como pueden obtener, incluso más allá de lo que puede contener un char ; así que si el siguiente carácter en el literal de la cadena es uno de [0-9a-fA-F] , no hay forma de "terminar" el escape hexadecimal antes de eso (1); esta es la razón por la cual las secuencias octales son preferidas por algunos.

(1): Como MM señaló, podría dividir su literal de cadena en dos ( "/xAB" "CD" ).

En cuanto a lo que los distintos valores de caracteres podrían representar, en qué codificación, recomiendo una buena tabla de códigos . Este me azoté a mí mismo, ya que no pude encontrar ninguno existente que enumerara toda la información que necesitaba en una página.


/233 es el personaje con el código octal 233.

En decimal esto es 2 × 8 2 + 3 × 8 + 3 = 155

El significado depende del juego de caracteres que se usa. Los códigos más allá de 127 no están definidos en ASCII de 7 bits.

Según lo anunciado por DevSolar:
http://rootdirectory.de/chrome/site/encoding.html podría ser útil


Esa notación es octal-escape-sequence que representa la representación del número octal para un literal char (constante char ).

Citando C11 , capítulo §6.4.4.4, constantes de caracteres

Los valores de comillas simples '' , comillas dobles '' , signos de interrogación '', la diagonal inversa / y valores enteros arbitrarios son representables de acuerdo con la siguiente tabla de secuencias de escape:

  • ...
  • carácter octal /octal digits

y, con respecto a los valores,

Los dígitos octales que siguen a la barra diagonal inversa en una secuencia de escape octal se toman como parte de la construcción de un solo carácter para una constante de caracteres enteros o de un solo carácter ancho para una constante de caracteres anchos. El valor numérico del entero octal así formado especifica el valor del carácter deseado o el carácter ancho.