Dúvida no exemplo (Linguagem C).
Olá pessoal, estou estudando C e acabei de fazer um exemplo que me gerou uma certa dúvida, se poderem me ajudar, ficarei grato.
#include <stdio.h>
int main() { int y = 65; char x;
x = (char) y; printf("O numero inteiro: %d \n O caractere: %c \n\n", y, x); return 0; }
Assim que ocorre a conversão de int para char ele mostra na tela a letra A, assim que executo. A questão é, porque ele mostra a letra A? não entendi isso.
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
isso acontece pq 65 é o valor correspondente a letra A na tabela ASCII https://www.ime.usp.br/~pf/algoritmos/apend/ascii.html
Olá Diego, tudo bem?
Isso acontece por conta dos caracteres de ASCII como no exemplo abaixo: De Yoair Blog: Uma Visão Geral da Tabela ASCII (Código do Sistema Americano para Intercâmbio de Informações)
Também existe essa tabela mais completa com suas variações: Tabela Asci no Pinterest por ryuzaki ryuga
De acordo com o próprio Ryuzaki:
A tabela ascii consiste numa codificação de caracteres de oito bits, sendo esta baseada no alfabeto inglês. Os códigos ascii podem representar textos em computadores, equipamentos de comunicação, entre outros dispositivos que trabalham com texto. ASCII no Wikipedia.