Pregunta

¿Qué hace el siguiente fragmento de código (en C) de impresión?

int a = 033;
printf("%d", a + 1);
¿Fue útil?

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
scroll top