Progtwigción en c interpretación octal automática.

Código 1:

int a = 0987654321; printf("%d",a); 

Código 2:

 int a; scanf("%d",&a); printf("%d",a); 

Aquí, si ingresamos 0987654321, luego se imprime lo mismo, pero en el primer fragmento de código, está dando un error que indica un valor no válido de 9 en constante octal.

Hay varias representaciones que puede utilizar al escribir código con C –

  • Hexadecimal (0x123A)
  • Binario (0b1011) : no es compatible con el estándar C, pero es una extensión proporcionada por comstackdores como gcc .
  • Octal (01237)
  • Decimal (1234) – quizás el más común.

Lo que estás usando aquí es la representación octal (porque comienza con un 0 ). El significado de cada uno de los dígitos es la base 8. Como resultado, cada uno de los dígitos después del 0 solo puede estar en el rango [0-7] . 9 no es un dígito octal válido y, por lo tanto, el comstackdor se queja.

Si desea utilizar la representación decimal, puede eliminar el 0 como:

 int a = 987654321; 

En el segundo ejemplo, realmente funciona bien porque scanf con %d siempre escanea como una representación decimal y 9 es un dígito decimal válido.