¿Qué significa el siguiente fragmento de código (en C) imprimir?
Pregunta
¿Qué hace el siguiente fragmento de código (en C) de impresión?
int a = 033;
printf("%d", a + 1);
Solución
033
es un octal literal entero y su valor es 8*3+3 = 27
. Su código imprime 28
.
Un entero literal que comienza con un 0
es octal. Si se inicia en 0x
que de hexadecimal.
Por cierto, por el amor de un ejemplo
int x = 08; //error
es un error de tiempo de compilación desde 8
no es un dígito octal.
Otros consejos
Me arriesgaría una conjetura y digamos 28
salvaje:)
28.
033 es un número octal en C porque tiene un líder "0" y que los medios su valor es 27 en decimal.
Por lo tanto, 27 + 1 = 28
aquí está el ejemplo:
- a 3 dígitos con cero en el inicio es un octal.
- un valor de 2 dígitos con "0x" en el principio es un hexágono.
Trate de mirar este ejemplo:
#include<stdio.h>
main()
{
int a = 033;
printf("\nin decimal: %d", a+1);
printf("\nin hex: %x", a+1);
printf("\nin octal: %o", a+1);
}
Esto resulta en:
in decimal: 28
in hex: 1c
in octal: 34
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow