Diferencia entre revisiones de «unsigned long»

De ArduWiki
Saltar a: navegación, buscar
(Parámetros)
(Referencias)
 
(No se muestran 7 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
Es como el tipo de dato [[long]]] para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo '''uint32_t''', sin embargo funciona exactamente igual.
+
Es como el tipo de dato [[long]] para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo '''uint32_t''', sin embargo funciona exactamente igual.
 +
 
 +
{{Nota|Tenga cuidado al hacer operaciones con numeros enteros ya que si no lo especificas explisitamente, Arduino asume que quieres trabajar con [[int]]. Ver Ejemplo 1.}}
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 43: Línea 45:
  
 
== Advertencias ==
 
== Advertencias ==
* Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 08.
+
* Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 0.
 
* Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.
 
* Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.
  
== Ejemplo ==
+
== Ejemplo 1 ==
Un ejemplo de parpadeo sin usar [[delay()]].
+
Los números 60 y 24 son interpretados como [[int]] por Arduino que soporta maximo de 32,767 de modo que 86,400 no entra.
 +
 
 +
<syntaxhighlight lang="c++">
 +
unsigned long segundos = 60 * 60 * 24;  //Error
 +
unsigned long segundos = 60UL * 60 * 24;  //Ok
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 +
Hacer parpadear el LED a bordo sin usar [[delay()]].
 +
 
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 
unsigned long hora=0;
 
unsigned long hora=0;
Línea 62: Línea 73:
  
 
== Vea también ==
 
== Vea también ==
* [[char]]
+
<categorytree mode=all>Tipo dato</categorytree>
* [[byte]]
 
* [[int]]
 
* [[long]]
 
* [[float]]
 
* [[double]] - solo [[MEGA]]
 
* [[unsigned int]]
 
* [[word]]
 
  
 
== Referencias ==
 
== Referencias ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
  
[[Category:Variables]]
+
[[Category:Tipo dato]]

Revisión actual del 14:40 6 may 2019

Descripción

Es como el tipo de dato long para almacenar 4 byte (32 bits), pero sin signo es decir no almacena números negativos, teniendo un rango desde 0 a 4,294,967,295 (2^32-1). Alternativamente puede verse declarado como tipo uint32_t, sin embargo funciona exactamente igual.

Nota: Tenga cuidado al hacer operaciones con numeros enteros ya que si no lo especificas explisitamente, Arduino asume que quieres trabajar con int. Ver Ejemplo 1.


Sintaxis

unsigned long variable [= valor];
uit32_t variable [= valor];
variable = valorUL;

Parámetros

variable
El nombre de variable a definir.
valor
Valor que asignamos a la variable en el rango entre 0~4,294,967,295. Parámetro opcional.
valorUL
Forzar con subfijo UL. Puedes omitir la palabra unsigned long antes del nombre de la variable.
uit32_t
sinonimo de unsigned long.
Posibles formateadores
Base Subfijo Ejemplo
unsigned int U n = 123U
long L n = 123L
unsigned long UL n = 123UL
float F n =12.3F


Posibles formateadores
Base Prefijo Comentario Ejemplo
DEC ninguno Dígitos 0~9 123
HEX 0x dígitos 0~9 + Caracteres A~F 0x7B
OCT 0 digitos 0~7 0173
BIN B 0 o 1 B1110011

Advertencias

  • Si sumas 1 al valor maximo que de 4,294,967,295 pasa a 0.
  • Si restas 1 al valor minimo que de 0 pasa a 4,294,967,295.

Ejemplo 1

Los números 60 y 24 son interpretados como int por Arduino que soporta maximo de 32,767 de modo que 86,400 no entra.

unsigned long segundos = 60 * 60 * 24;  //Error
unsigned long segundos = 60UL * 60 * 24;   //Ok

Ejemplo 2

Hacer parpadear el LED a bordo sin usar delay().

unsigned long hora=0;
void setup(){
   pinMode(LED_BUITIN, OUTPUT);
}
void loop(){
   if (millis() - hora > 500){
      hora = millis();
      digitalWrite(LED_BUITIN, !digitalRead(LED_BUITIN));
   }
}

Vea también

  bool
  byte
  char
  int
  long
  void
  word


Referencias