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 como int e o long só 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 num int do Uno. Declare a variável como long desde o início.
  • Funções como millis() e micros() já devolvem valores de 32 bits — guarde sempre em unsigned long.
  • Se você nunca precisa de negativos e quer o dobro do alcance positivo, veja unsigned long.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker