Diferencia entre revisiones de «unsigned long»
De ArduWiki
(→Descripción) |
(→Referencias) |
||
(No se muestran 5 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 | + | * 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 == |
+ | 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()]]. | 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 == | ||
− | + | <categorytree mode=all>Tipo dato</categorytree> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 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: | + | [[Category:Tipo dato]] |
Revisión actual del 18:40 6 may 2019
Contenido
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.
Base | Subfijo | Ejemplo |
---|---|---|
unsigned int | U | n = 123U |
long | L | n = 123L |
unsigned long | UL | n = 123UL |
float | F | n =12.3F |
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