Números octales en c

Hay algunos hechos menos conocidos en C relacionados con los números octales. Veamos primero el siguiente código de ejemplo.

Ejemplos:

// program to show octal number interpretation
#include <stdio.h>
  
int main()
{
    int x = 012;
    printf("%d", x);
    return 0;
}

Producción:

10

Sorprendentemente, la salida no es 12. Esto sucede porque un dígito entero precedido por 0 se interpreta como un número octal. Un número octal para el valor decimal 12 es 10. Pero, ¿y si x es igual a 092? Entonces el compilador mostrará un error porque 92 no es un número octal válido.

Secuencia de escape octal
En C, la secuencia de escape octal se representa con \ seguida de tres dígitos octales. Tenga en cuenta que también se permiten uno o dos dígitos octales. Una secuencia octal termina después de tres dígitos octales que siguen a \ o cuando un dígito después de \ no es un dígito octal.

Ejemplos:

// program to show octal escape sequence
#include <stdio.h>
int main()
{
    char str[] = "31\01267";
    printf("%s", str);
    return 0;
}

Producción:

31
67

Si observamos la salida, luego de 31 se imprime un carácter de nueva línea y luego se imprime 67. Esto se debe a que \012 se interpreta como \n o un carácter de nueva línea. En realidad, \012 representa una secuencia de escape octal para \n o una nueva línea. El valor octal de 12 en decimal es 10 y en ASCII representa nueva línea.

// program to show octal escape sequence
#include <stdio.h>
int main()
{
    char str[] = "31\12367";
    printf("%s", str);
    printf("\n");
    char str2[] = "11\77967";
    printf("%s", str2);
    return 0;
}

Producción:

31S67
11?967

En str \123 se interpreta como secuencia de escape octal y el valor de octal 123 es 83 y el carácter correspondiente en mi máquina es ‘S’ ya que mi máquina usa ASCII. Puede ser diferente si el conjunto de caracteres utilizado no es ASCII.
En str2 \77 se interpreta como una secuencia de escape octal y no como \779. Entonces, el valor de 77 es 63 en decimal y en ASCII es ‘?’.

Este artículo es una contribución de Ashish Sharma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *