Página 1 de 1

problema variável long int (resolvido)

MensagemEnviado: 10 Nov 2011 11:18
por blackpic
Olá,

estou tendo um problema com uma função onde multiplico uma variável long int por 3.

long int x;
long int somar;
somar=x*3;

quando o valor da variável x é 120 por exemplo, a variável somar assume um valor de 104, quando deveria ser 360.

Notei que esa variável sempre apresenta esse problema quando assume valores acima de 250. Como ela é 16 bits então presume-se que seu valor está entre 0 a 65535, não deveria acontecer isso. Estou correto?

Abraço.

MensagemEnviado: 10 Nov 2011 11:49
por mastk
Depende do seu compilador, está habilitado "long int"? Parece que estão sendo variaveis de 8 bits, não de 32/64 bits.

MensagemEnviado: 10 Nov 2011 12:06
por blackpic
Oi Mastk,

estou usando o CCS.

"está habilitado "long int"?"
não entendi a pergunta.

eu declarei dessa forma:
long int x;

Se existe outra maneira eu não conheço ainda. :)

Obrigado

MensagemEnviado: 10 Nov 2011 12:54
por mastk
Tenta:

long X;

E estuda o CCS.

MensagemEnviado: 10 Nov 2011 14:12
por blackpic
Valeu.

Re: problema variável long int

MensagemEnviado: 10 Nov 2011 21:02
por andre_luis
Pra não desperdiçar recurso do microcontrolador, declarando X como long, poderia fazer um casting para long somente para o resultado :

...
int X;
long somar;
somar=(long)x*3;

MensagemEnviado: 10 Nov 2011 21:13
por blackpic
Obrigado andré foi isso mesmo que acabei fazendo, e agora ficou certo.

Obrigado pela ajuda.

Abraço

MensagemEnviado: 11 Nov 2011 10:11
por rona123
Pra não desperdiçar recurso do microcontrolador, declarando X como long, poderia fazer um casting para long somente para o resultado :


Lindo macetinho!
De extra, dá prazer ler suas mensagens - pena que todos não são assim ...
Obrigado!