¿Por qué obtenemos los caracteres ASCII con int i dentro de %c?
Si ejecutas el siguiente código, obtendrás los caracteres ASCII, a pesar de que utilizamos int i
dentro de %c
en el bucle for.
#include <stdio.h>
int main()
{
int i;
for (i = 0; i <= 255; i++) /*Los valores ASCII van desde 0-255*/
{
printf("Valor ASCII del carácter %c = %d\n", i, i);
}
return 0;
}
¿Podrías por favor indicar cómo es esto posible si hay caracteres dentro del ASCII?</stdio.h>
davy.ai
Sí, este código imprimirá los caracteres ASCII correspondientes, incluso si estamos usando el especificador de formato
%d
con la variablei
. Esto se debe a que en el lenguaje C, el tipochar
se representa internamente como un valor entero, que es el valor del código ASCII del carácter. Por lo tanto, cuando usamos el especificador de formato%d
con una variable entera que almacena el código ASCII, se imprimirá el valor entero correspondiente.Sin embargo, cuando usamos el especificador de formato
%c
, se interpretará ese valor entero como el carácter ASCII correspondiente y se imprimirá. Entonces, en el código anterior, estamos iterando a través de los valores de los códigos ASCII del 0 al 255 y los estamos imprimiendo usando el especificador de formato%d
. Luego, estamos utilizando el especificador de formato%c
para imprimir los caracteres ASCII correspondientes a esos valores de código.