Bom pessoas, declarando a instrução abaixo, gostaria de saber porque um int recebe um “char”, e converte o seu valor para número.
int a = 'c';
System.out.println("A saída é: "+ a);
//A saída é: 99
Obrigado…
:thumbup:
Bom pessoas, declarando a instrução abaixo, gostaria de saber porque um int recebe um “char”, e converte o seu valor para número.
int a = 'c';
System.out.println("A saída é: "+ a);
//A saída é: 99
Obrigado…
:thumbup:
Acho que é por que os chars possuem um valor int associado em alguma tabela.
Por isso a saída é esta.
Eu acho
eu não sei de que tabela exatamente que é mais… axo que é asc2…
quando vc atribui um char a uma variavel inteira, o que vai pra variavel é a posição desse char na tabela asc… (axo q asc…)
Isso mesmo 99 é o código ASCII do char c
Um, então é referência para o código ASCII… seria o mesmo que pressionar: alt + 99
Faz sentido.
:thumbup:
‘c’ = ‘99’ na tabela ASCII, o java faz a associação… descobri graças ao seu post…
Olá, é exatamente o que o amigo Bruno Lacerda disse. O padrão não é o ASCII e nem EBCDIC, tanto o java como o .NET usam o padrão UNICODE, que consegue representar mais caracteres do que os outros.
Lógico que com isso ele ocupa um espaço maior , enquanto com 1 byte(8 bits), eu represento um ‘A’ no C, no java para representar um ‘A’ eu gasto 2 bytes(16 bits).!
Esse código 99, é o código UNICODE associado ao caracter ‘c’.
Att
Obrigado a todos… Isso mesmo…
:thumbup:
Primeiro não é ASCII é unicode.
Segundo todo o char tem o mesmo numero de bits que um int
Terceiro ( e isto pode ser uma surpresa) um char é um numero.
Na realidade é numero apenas positivo ( unsigned) ao contrario do int.
Quarto existe uma coisa chamada cast : a conversão entre tipos.
A instrução int i = ‘c’ nada é do que: Usa o valor unicode do c e coloca num int.
Se vc usar um char maior que o tamanho do inteiro o i vai ser negativo.
Não ha nenhuma tabela envolvida no processo. A propria definição de char é a tabela.
Todo caracter tem um inteiro associado, e eles estão disponiveis na tabela ASCII.
Isso não acontece só em java, toda vez que vc mandar imprimir um caracter como se fosse um inteiro, em qq lingugem, será mostrado seu codigo ASCII.
[quote=sergiotaborda]Primeiro não é ASCII é unicode.
Segundo todo o char tem o mesmo numero de bits que um int
[/quote]
Não seria o mesmo número de bits, que o short??
short=2 bytes
char=2 bytes
int =4 bytes
[quote=Daniel Reis]Obrigado a todos… Isso mesmo…
:thumbup: [/quote]
Dá uma olhada neste link http://www.richard.eti.br/duvidas62.html
Valeu!