Hola, hallamos la respuesta a lo que necesitas, has scroll y la verás más abajo.
Solución:
Todos y cada uno de los literales enteros que puede crear se resumen en el estándar C++ mediante la producción de gramática en [lex.icon]
integer-literal: binary-literal integer-suffixopt octal-literal integer-suffixopt decimal-literal integer-suffixopt hexadecimal-literal integer-suffixopt binary-literal: 0b binary-digit 0B binary-digit binary-literal 'opt binary-digit octal-literal: 0 octal-literal 'opt octal-digit decimal-literal: nonzero-digit decimal-literal 'opt digit hexadecimal-literal: hexadecimal-prefix hexadecimal-digit-sequence binary-digit: 0 1 octal-digit: one of 0 1 2 3 4 5 6 7 nonzero-digit: one of 1 2 3 4 5 6 7 8 9 hexadecimal-prefix: one of 0x 0X hexadecimal-digit-sequence: hexadecimal-digit hexadecimal-digit-sequence 'opt hexadecimal-digit hexadecimal-digit: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
Como podemos deducir de la gramática, hay cuatro tipos de literales enteros:
- Decimal simple, que debe comenzar con un dígito distinto de cero.
- Octal, cualquier número con un 0 inicial (incluido un 0 simple).
- Binario, que requiere la prefix
0b
o0B
. - Hexadecimal, requiriendo el prefix
0x
o0X
.
El 0 inicial de los números octales se puede considerar como la “O” en “Octal”. Los otros prefijos usan un cero inicial para marcar el comienzo de un número que no debe interpretarse como decimal. “B” es intuitivamente para “binario”, mientras que “X” es para “élXadecimal”.
0b
(o 0B
) denota un literal binario. C++ lo ha permitido desde C++14. (Todavía no es parte del estándar C, aunque algunos compiladores lo permiten como una extensión). 0x
(o 0X
) es para hexadecimal.
0
puede usarse para denotar un literal octal. (Curiosamente 0
en sí mismo es un literal octal). Además utilizas el secuencia de escape seguido de dígitos para ser leídos en octal: esto se aplica solo cuando se define
const char[]
literales usando ""
o char
o literales de varios caracteres usando ''
. los ' '
la notación que a menudo se ve para denotar NUL cuando se trabaja con cadenas explota eso.
En ausencia de un literal definido por el usuario sufijo, cualquier literal numérico que comience con un distinto de cero está en denario.
Hay rumores en el mundo de C++ para usar 0o
para un literal octal y tal vez incluso eliminar el soporte para la versión cero inicial. Aunque eso sería un horrible cambio de última hora.
valoraciones y comentarios
Te invitamos a añadir valor a nuestra información aportando tu experiencia en las explicaciones.