¿Cuál es la diferencia entre %dy %icuando se usan como especificadores de formato printf?
202
Ellos son los mismos cuando se utiliza para la salida, por ejemplo con printf.
Sin embargo, estos son diferentes cuando se usan como especificador de entrada, por ejemplo scanf, con , donde %descanea un número entero como un número decimal con signo, pero por %idefecto es decimal pero también permite hexadecimal (si está precedido por 0x) y octal (si está precedido por 0).
Entonces 033sería 27 con %ipero 33 con %d.
printfyscanf.Estos son idénticos para
printfpero diferentes parascanf. Paraprintf, ambos%dy%idesignan un entero decimal con signo. Forscanf,%dy%itambién significa un entero con signo, pero%iinterpreta la entrada como un número hexadecimal si está precedido por0xy octal si está precedido por0y de lo contrario interpreta la entrada como decimal.fuente
No hay diferencia entre los especificadores de formato
%iy . Podemos ver esto yendo al borrador de la sección estándar C99 La función fprintf que también cubre con respecto a los especificadores de formato y dice en el párrafo 8 :%dprintf7.19.6.1printfe incluye la siguiente viñeta:
Por otro lado, porque
scanfhay una diferencia,%dasuma la base 10 mientras%iauto detecta la base. Podemos ver esto yendo a la sección7.19.6.2La función fscanf que cubrescanfcon respecto al especificador de formato, en el párrafo 12 dice:e incluye lo siguiente:
fuente
No hay ninguno en
printf- los dos son sinónimos.fuente
scanf()formato de cadena como dice la respuesta aceptada.