¿Por qué% d significa Integer?


78

Sé que esto no suena productivo, pero estoy buscando una forma de recordar todos los códigos de formato de las printfllamadas. %s, %p, %fTodas son obvias, pero no puedo entender de dónde %dviene. ¿ %iYa está tomado por algo más?


21
Mi mejor suposición es decimal
Juan Mendes

Sí, sin embargo, esta es una especie de +1 irónico, una pregunta interesante.
Daniel

Aunque no es una pregunta de programación real, y tiendo a cerrarlas :)
Juan Mendes

9
"d" significa "Significa entero". Suficientemente fácil.
Loneboat

Respuestas:


98

Significa " decimal " (base 10), no "entero". Puede utilizar %xpara imprimir en hexadecimal (base 16) y %opara imprimir en octal (base 8). Un número entero podría estar en cualquiera de estas bases.

En printf(), puede usarlo %icomo sinónimo de %d, si prefiere indicar "entero" en lugar de "decimal", pero %dgeneralmente se prefiere porque es más específico.

En la entrada, usando scanf(), puede usar use both %iand %das well. %isignifica analizarlo como un entero en cualquier base (octal, hexadecimal o decimal, como lo indica un prefijo 0o 0x), mientras que %dsignifica analizarlo como un entero decimal.

Aquí hay un ejemplo de todos ellos en acción:

Por lo tanto, solo debe usar %isi desea que la base de entrada dependa del prefijo; si la base de entrada debe ser fijo, se debe utilizar %d, %xo %o. En particular, el hecho de que un líder lo 0ponga en modo octal puede atraparlo.


entonces la verdadera pregunta es "¿por qué Java llama a los enteros 'int'", cuando un largo, un corto y un byte ... también son ints
bharal

8

http://en.wikipedia.org/wiki/Printf_format_string parece decir que es para decimal como había adivinado

d,i

int como un número decimal con signo. '% d' y '% i' son sinónimos para la salida, pero son diferentes cuando se usan con scanf () para la entrada (usando% i interpretará un número como hexadecimal si está precedido por 0x y octal si está precedido por 0).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.