Diferencia entre revisiones de «unsigned long»
De ArduWiki
(→Vea también) |
(→Referencias) |
||
(No se muestran 11 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. | |
+ | |||
+ | {{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 == | ||
<pre> | <pre> | ||
unsigned long variable [= valor]; | unsigned long variable [= valor]; | ||
+ | uit32_t variable [= valor]; | ||
variable = valorUL; | variable = valorUL; | ||
</pre> | </pre> | ||
− | == | + | == Parámetros == |
− | ;variable: | + | ;variable: El nombre de variable a definir. |
− | ;valor: | + | ;valor: Valor que asignamos a la variable en el rango entre 0~4,294,967,295. Parámetro opcional. |
− | ;valorUL: | + | ;valorUL: Forzar con subfijo '''UL'''. Puedes omitir la palabra '''unsigned long''' antes del nombre de la variable. |
+ | ;uit32_t: sinonimo de '''unsigned long'''. | ||
+ | |||
+ | {| class="wikitable col2cen" | ||
+ | |+Posibles formateadores | ||
+ | !Base!!Subfijo!!Ejemplo | ||
+ | |- | ||
+ | |[[unsigned int]]||U||n = 123U | ||
+ | |- | ||
+ | |[[long]]||L||n = 123L | ||
+ | |- | ||
+ | |[[unsigned long]]||UL||n = 123UL | ||
+ | |- | ||
+ | |[[float]]||F||n =12.3F | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable col2cen" | ||
+ | |+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 == | == 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()]]. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
unsigned long hora=0; | unsigned long hora=0; | ||
Línea 33: | 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