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 –
(0x123A)
(0b1011)
: no es compatible con el estándar C, pero es una extensión proporcionada por comstackdores como gcc
. (01237)
(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.