problema variável long int (resolvido)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

problema variável long int (resolvido)

Mensagempor blackpic » 10 Nov 2011 11:18

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.
Editado pela última vez por blackpic em 10 Nov 2011 21:14, em um total de 1 vez.
blackpic
Bit
 
Mensagens: 11
Registrado em: 07 Set 2011 09:29
Localização: -51.491458, -0.15939

Mensagempor mastk » 10 Nov 2011 11:49

Depende do seu compilador, está habilitado "long int"? Parece que estão sendo variaveis de 8 bits, não de 32/64 bits.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor blackpic » 10 Nov 2011 12:06

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
blackpic
Bit
 
Mensagens: 11
Registrado em: 07 Set 2011 09:29
Localização: -51.491458, -0.15939

Mensagempor mastk » 10 Nov 2011 12:54

Tenta:

long X;

E estuda o CCS.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor blackpic » 10 Nov 2011 14:12

Valeu.
blackpic
Bit
 
Mensagens: 11
Registrado em: 07 Set 2011 09:29
Localização: -51.491458, -0.15939

Re: problema variável long int

Mensagempor andre_luis » 10 Nov 2011 21:02

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;
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor blackpic » 10 Nov 2011 21:13

Obrigado andré foi isso mesmo que acabei fazendo, e agora ficou certo.

Obrigado pela ajuda.

Abraço
blackpic
Bit
 
Mensagens: 11
Registrado em: 07 Set 2011 09:29
Localização: -51.491458, -0.15939

Mensagempor rona123 » 11 Nov 2011 10:11

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!
rona123
Byte
 
Mensagens: 214
Registrado em: 07 Mai 2009 20:01


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x