Questão:
Linguagem C?
2014-11-11 13:12:44 UTC
Estou aprendendo linguagem C e estou com uma dúvida quanto as variáveis, estou testando-as e as vezes quando digito certo valor e tento imprimi-lo na tela ele não aparece, na verdade aparece um valor completamente diferente, como por exemplo quando digito um número grande, aparece imprimido um outro número grande mas negativo... enfim, queria saber porque coisas assim acontecem.
Cinco respostas:
?
2014-11-12 01:51:10 UTC
Precisando de ajuda!

Tem algum projeto, software, sites, blog, trabalhos em geral..

Traga sua ideia que resolvemos.

E-mail: mvf5system@gmail.com

Blog: http://mvf5-system.blogspot.com.br/
Osvaldo
2014-11-11 13:37:11 UTC
Quando você atribui a uma variável um valor maior que o tipo de dado desta variável comporta você tem estes comportamentos estranhos.

Lembre-se de utilizar tipos de dados adequados às necessidades dos dados que irá armazenar.

Não sei qual compilador você está utilizando mas o gcc possui a opção -ftrapv que permite a captura da ocorrência de overflow nas operações matemáticas.
2014-11-11 13:32:51 UTC
as variaveis sao um espaço limitado na memoria ram do seu computador.

Quando vc reserva uma vc no fundo esta reservando um espaço.

Dependendo da variavel vc dispoe de mas o menos espaço.

por exemplo: un int ocupa na memoria a 4 bytes e como maximo vc pode guardar un numero de -2.147.483.648 a 2.147.483.647.

si vc declarar a variavel como unsigned entao vc dispoe de 0 a 4.294.967.295 ja que com unsigned quer dizer que vc nao quer usar numeros negativos, entao eses mesmos numeros negativos estao disponiveis do lado positivo.

O que acontece quando vc ultrapassa esse limite?

Imagine que logo depois do ultimo numero vc retorna ao primeiro numero ou seja que si vc pasar de 2.147.483.647 vc vai voltar a parte negativa que é -2.147.483.648.

Pode fazer a prova...

vc declara um int assim

int n = 2.147.483.647;

ai vc imprime ele

e depois vc soma 1 assim

2.147.483.647 + 1;

...e imprime ele outravez. vc vai ver um bonito -2.147.483.648.

por outro lado si vc declarar o inteiro como unsigned.

usigned int n = 4.294.967.295;

y vc somar um ao n novamente, vc nao vai voltar ao -2.147.483.648 si nao a zero.

Entao a conclusao é que vc nao dispoe de un espaço infinito por que o espaço que vc reserva é finito.

Existem variaveis que cabem numeros maiores e incluso menores como no caso de short int que cabe de -32.768 a 32.767 e de 0 a 65.535 si for sem sinal negativa (unsigned).

Imagine que é un bucle que si vc pasar vc vai retornar ao principio.

Aqui vc tem mas informaçao em uma tabela: http://equipe.nce.ufrj.br/adriano/c/apostila/tipos.htm



Busque tipos de variaveis em C no google para mais informaçao.

suerte.
The Guy
2014-11-11 13:24:05 UTC
Existe Um limite de caracteres agr nnlembrono tamanho mais ta relacionado bits etc procura na NET depois limite de caracteres p variável em C....



Caso queira utilizar um número maior declare ele como Double



Double nomevariavel



Ele vai ser maior porem existe um limite tbm
Andrew
2014-11-15 13:26:38 UTC
Quando você declara uma variável, precisa seguir a sintaxe desta declaração. Exemplo: Sintaxe para declarar uma variável:



Tipo de variável, nome da variável; ex. int i; float f; double soma;



Ao declarar uma variável, e executar o programa o compilador reserva um espaço na memória composto de a quantidade de bytes determinada pelo tipo. int i, terá o nome "i" no endereço em memória da variável seguido de 4 bytes, onde serão guardados os operandos, números atribuídos á "i".



O importante é que devemos carregar a variável declarada com dados que se alinham com o tipo, senão, teremos problemas.

i.e. int i; char c;

....

i = c; Gera erro pelo compilador.



Enquanto não inicializado, qualquer variável contém lixo, mas para inicializar uma variável com um valor antes de usá-lo resta declarar e inicializar, usar int i = 0;



Exemplos de tipos:



int j; j aceita números inteiros entre -2.147.483.648 e +2.147.483.647;



unsigned int j: j aceita qualquer número inteiro entre 0 e 4.294.967.295;



“unsigned short” pode ser qualquer número inteiro entre 0 e até 65.535;



“long” pode ser qualquer número inteiro entre –2.147.483.648 e até 2.147.483.647;



“unsigned long” pode ser qualquer número entre 0 e até 4.294.967.295;



float f; “float” pode ser qualquer número inclusive de ponto flutuante (fração) 3,4E+/-38 em notação científica, e equivale a

3,4 x 10+/-38;



double num; “double” pode ser qualquer número de ponto flutuante 1,7E+/-308;



char c; “char” um caractere que consta da Tabela ASCII;



#include



..

..

string sString = " Esta eh uma string"; “string” uma sequência de caracteres e espaços que conterá no final um caractere nulo que não é contado, i.e. \0;



Um abraço


Este conteúdo foi postado originalmente no Y! Answers, um site de perguntas e respostas que foi encerrado em 2021.
Loading...