Bom dia!
Verificando os tipos de dados da linguagem C definido no padrão ANSI achei a seguinte tabela: Tipo: char Tamanho em bits: 8 Faixa mínima: -128 a 128
O que seria essa faixa mínima???
Bom dia!
Verificando os tipos de dados da linguagem C definido no padrão ANSI achei a seguinte tabela: Tipo: char Tamanho em bits: 8 Faixa mínima: -128 a 128
O que seria essa faixa mínima???
Bom dia, Matheus!
Em C, o tipo char, na verdade, é um int (inteiro) de 1 byte. Sendo assim, ele consegue armazenar 2^8 bits = 256 bits.
Então, com 256 bits, poderíamos ir de 0 a 255 caracteres. Ocorre que quando não há nada explícito, os dados em C são signed, o que significa que eles representam números negativos e positivos. Dessa forma, como 1 byte pode armazenar até 256 bits (positivos e negativos), ele representa números de -128 até 127.
Manoel, agradeço pela ajuda!
Só pra entender melhor, quer dizer que esse números representam caracteres? isso?
Matheus, assim:
1 byte = 8 bits
isso significa que 1 byte armazena 8 valores binários, ou seja, entre
0000 0000 e 1111 1111
Como tudo é bit, o computador usa os bits para representarem caracteres. Você pode achar eles numa tabela ASCII como essa:
Veja que qualquer caractere do nosso alfabeto pode ser representado com apenas 8 bits (1 byte = capacidade de 1 char).
Dessa forma, para escrever Matheus, o computador usa:
01001101 01100001 01110100 01101000 01100101 01110101 01110011
Deu pra compreender melhor agora? :)
Obrigado mais uma vez Manoel (e peço só um pouco mais de paciência hahaha)!!!
Então, essa faixa de -128 ate 128 é apenas representativa ou ela é fixa para este tipo de variável? Ou seja, ela poderia ser representada também como "-256 a 0" ou "0 a 256"??
Matheus,
O char pode representar letra, números positivos e números negativos.
Caso você queira representar apenas letras, use ele sem marcação alguma, apenas
char minhavariavel = 'k';
As variáveis podem ser signed (sinalizadas, ou seja, podem conter números negativos ou positivos) e unsigned (que despreza os negativos e utiliza apenas os positivos, dobrando a capacidade de representação.
Assim, se você for atribuir um número à variável do tipo char, ela aceitará números de -128 até 127. Você pode declarar:
char minhavariavel = 121;
// ou
char minhasegundavariavel = -14;
Se você precisar inserir o número 230 numa variável, ela não poderá ser do tipo char (signed char), você terá que usar um tipo maior (que comporte mais bits) ou, se você declarar a variável como unsigned char, ela poderá conter números de 0 até 255. A declaração é assim:
unsigned char minhavariavel = 230;
Não sei se você sabe a linguagem C, mas pode testar o código abaixo em um compilador online com essas explicações que já te passei.
#include <stdio.h>
int main() {
char minhavariavel = 'w';
char minhavariavelpositiva = 120;
char minhavariavelnegativa = -115;
unsigned char minhavariavelunsigned = 220;
printf("Minha variavel char: %c", minhavariavel);
printf("\nMinha variavel positiva: %d", minhavariavelpositiva);
printf("\nMinha variavel negativa: %d", minhavariavelnegativa);
printf("\nMinha variavel unsigned (0 ate 255):%u\n", minhavariavelunsigned);
}
Dá uma olhada no código que fiz pra você testar em (http://ideone.com/4hntHI). Clica em edit e, depois no botão verde ideon it!. Aí você pode fazer uns testes.
Espero que tenha ficado mais claro... hehe.
Se ainda tiver dúvida, só postar!