Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Tipos de dados Padrão ANSI - C

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???

5 respostas

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"??

solução!

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!