Diferencia entre revisiones de «int»
(→Ejemplo 1) |
(→Ejemplo 2) |
||
Línea 61: | Línea 61: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
int var[2000]; //Error | int var[2000]; //Error | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | Asignamos un caracter ASCII al int y operamos. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup() { | ||
+ | Serial.begin(115000); | ||
+ | Serial.println("Letras mayusculas:"); | ||
+ | for (int c='A'; c<='Z'; c++){ | ||
+ | Serial.write(c); //Imprime el carácter | ||
+ | Serial.print(", dec: "); | ||
+ | Serial.println(c); //Imprime su valor ASCII decimal | ||
+ | delay(100); | ||
+ | } | ||
+ | } | ||
+ | void loop() { | ||
+ | //Nada | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 16:00 25 feb 2019
Contenido
Descripción
Los int (enteros) son el tipo de datos primario para el almacenamiento de números.
En el Arduino UNO (y otras placa basadas en el ATmega) un int almacena un valor de 2 byte (16 bit). Esto produce un rango de -32,768 (-2^15) a 32,767 (2^15-1).
En el Arduino DUE, un int almacena un valor de 4 byte (32 bit). Esto produce un rango de -2,147,483,648 (-2^31) a 2,147,483,647 (2^31-1).
Los int almacenan números negativos con una técnica llamada complemento matemático a 2. El bit más alto, a veces llamado bit de "signo" es la bandera que define el número como negativo. El resto de los bits se invierte y se les añade 1.
Sintaxis
int variable [= valor];
Parámetros
- variable
- nombre de a variable a definir.
- valor
- numero en el rango. Parámetro opcional.
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 | B1111011 |
Comentarios
- En Arduino MEGA es un tipo de 2 bytes (16 bits) que almacena numeros entre -32,768 (-2^15) y 32,767 (2^15-1).
Advertencias
- El Arduino se encarga de tratar los número negativos por nosotros, por lo que las operaciones aritméticas trabajan de forma transparente de la manera esperada. Sin embargo, podemos encontrarnos con una complicación inesperada con el operador bitshift right (>>) (desplazamiento de bit a la derecha).
- Si sumas 1 al valor maximo que de 32,767 pasa a -32,768.
- Si restas 1 al valor minimo que de -32,768 pasa a 32,767.
int a = 35767;
a++; //-32,768
int b = -31768;
b--; //32,767
Ejemplo 1
int num; //Variable declarada pero no inicializada.
int x,y,z; //Multiple variable declaradas pero no inicializadas.
int x=0,y=1,z=2; //Multiples variables declaradas e inicializadas.
int n = 'A';
int n = 65;
int n = 0x41; //0x = formato hexadecimal, 65
int n = 0101; //0 = formato octal, 65
int n = B1000001; //B = formato binario, 65
Ejemplo 2
En el siguiente ejemplo usuario pretende usar 4K de SRAM cuando Arduino UNO solo tiene 2K.
int var[2000]; //Error
Ejemplo 3
Asignamos un caracter ASCII al int y operamos.
void setup() {
Serial.begin(115000);
Serial.println("Letras mayusculas:");
for (int c='A'; c<='Z'; c++){
Serial.write(c); //Imprime el carácter
Serial.print(", dec: ");
Serial.println(c); //Imprime su valor ASCII decimal
delay(100);
}
}
void loop() {
//Nada
}
Vea también
- char
- byte
- unsigned int
- word
- long
- unsigned long
- float
- double - solo MEGA