void setup()
{
Serial.begin(115200);
}
void loop()
{
unsigned long teste = ((2023 * 1000000) + (12 * 10000));
Serial.print ("teste: ");
Serial.println (teste);
Serial.println ("certo: 2023120000");
Serial.println();
delay(5000);
}
O que estou fazendo de errado que o resultado está dando 2022988928?
Alguém pode me dar uma luz.
Desde já agradeço.
Tags:
Boa noite...
unsigned long teste;
void setup(){
Serial.begin(115200);
}
void loop(){
teste = ((2023 * 1000000) + (12 * 10000));
Serial.print ("teste: ");
Serial.println (teste);
Serial.println ("certo: 2023120000");
Serial.println();
delay(5000);
}
Na verdade, pra mim, os 2 estão funcionando.
Arduino 1.8.10
Boa noite,
Em qual placa testou?
no meu os dois apresentam erro.
Testo em um uno.
Quando finalizo costumo colocar em um nano.
Pedi o novo Arduino Nano Every. Estou esperando chegar.
Nunca usei os ESP.
Vou testar direto no nano e em outro uno.
Posto já o resultado.
Engraçado que o programa principal esta com mais de 1000 linhas de código e funcionando.
Só esse calculo que está dando esse problema.
Bom dia CF,
testando com o nano, qual o resultado?
Testa este sketch também.
RV
Funcionando também no ESP12F !!!
Faltou so abrir aqui hehehe:
teste = (((
mas tá funcionando.
FUNCIONOU.
unsigned long bb = ((unsigned long)12 * (unsigned long)10000);
Obrigado.
Infelizmente não achei meu UNO, faz anos que não uso, testei na placa de TESTE e no WEMOS, ambos com ESP12F, funcionando perfeitamente.
Mesmo colocando "teste" como Variável Global, apresenta o mesmo erro.
Já testei com 3 placas em micros diferente. O mesmo erro acontece.
Uno e Nano.
Olá.
Acredito que o compilador esteja se perdendo pq vc está mandando fazer contas com inteiros.
Para que os numeros que entram na conta sejam Long também vc precisa acumular em variáves Long, ex:
unsigned long teste = ((2023L * 1000000L) + (12L * 10000L));
Ref: https://www.arduino.cc/reference/pt/language/variables/data-types/l...
O ESP suporta mais bits, tem um int de 32bits, por isso os intermediários cabem.
Em long não, mas em float já preciei mto usar um 123.0 no lugar de 123 pra forçar o compilador a entender que o intermediário é float e não int.
Engraçado que se multiplicar por 50000 ou 100000 dá certo.
Só fica errado se multiplicar por 10000 neste caso.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por