O char
, apesar do nome, é um tipo numérico (que até poderia se chamar byte, pois no fundo é isso que ele é).
O que acontece é que esse número pode ser interpretado como um caractere, usando o seu respectivo valor na tabela ASCII.
Por isso, eu posso usar tanto o caractere quanto o seu respectivo valor numérico, que ambos funcionam. O que muda é na hora de imprimir, pois de acordo com o especificador de formato usado (%d
ou %c
), o valor impresso será "convertido" para o tipo indicado.
Ou seja, isso:
char c = 'A';
printf("%d\n", c); // 65
printf("%c\n", c); // A
Dá o mesmo resultado que isso:
char c = 65;
printf("%d\n", c); // 65
printf("%c\n", c); // A
Tanto que no seu caso, nem sequer precisaria do x
, você pode usar o próprio valor numérico do y
que também funciona:
int y = 65;
printf("O numero inteiro: %d \n O caractere: %c \n\n", y, y);
Isso imprime:
O numero inteiro: 65
O caractere: A