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???
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!