long()
long(valor)
Quando o número é grande demais pra caber num int (que no Uno para em 32767), você precisa de mais espaço. O long() converte o valor para um inteiro de 32 bits, que aguenta números na casa dos bilhões.
Sintaxe
long(valor);
Parâmetros
- valor: o número que você quer converter para
long.
Retorno
O valor convertido para long (32 bits com sinal), indo de -2.147.483.648 a 2.147.483.647.
Exemplo
void setup() {
Serial.begin(9600);
int a = 30000;
int b = 1000;
// 30000 e 1000 cabem no int, mas o produto (30 milhões) estoura;
// convertendo a pra long antes da conta, o resultado cabe
long resultado = long(a) * b;
Serial.println(resultado); // 30000000
}
void loop() {
}
Notas e cuidados
- Numa multiplicação que pode estourar, converta antes da conta (como
long(a) * b), senão o cálculo já estoura comointe olongsó recebe o valor errado. - Cuidado também ao só guardar um número grande:
int a = 60000;já estoura na hora da atribuição, porque 60000 não cabe numintdo Uno. Declare a variável comolongdesde o início. - Funções como
millis()emicros()já devolvem valores de 32 bits — guarde sempre emunsigned long. - Se você nunca precisa de negativos e quer o dobro do alcance positivo, veja
unsigned long.