Diferencia entre revisiones de «char»

De ArduWiki
Saltar a: navegación, buscar
(Parametros)
m (Un pequeño cambio, y además considero que la asignación con el caracter como tal (ejemplo 1) debe ir de último; la explicación la redacté para que así calzara ("habrás notado que sigue siendo la misma asignación"))
Línea 11: Línea 11:
 
== Parametros ==
 
== Parametros ==
 
;variable: nombre de la variable.
 
;variable: nombre de la variable.
;valor: debería ser un carácter entre comillas simples. Parámetro opcional.
+
;valor: normalmente suele ser un carácter entre comillas simples. Parámetro opcional.
  
 
== Advertencias ==
 
== Advertencias ==
Línea 21: Línea 21:
 
</pre>
 
</pre>
  
* Solamente los caracteres ASCII están estandarizados en todos las regiones del mundo y librerías para Arduino; la codificación del rango extendido (la parte negativa del '''char''' o la que va de 128 a 255) suele variar según la implementación. Un típico ejemplo es el problema de imprimir la 'ñ' en el monitor serial, o imprimir el símbolo de grados ('°') en un LCD de caracteres; ambos están en la parte extendida, por eso puede darnos resultados inesperados. Es también por esta razón que si encontramos código con literales (cadenas de caracteres) de un idioma que no utiliza las letras del alfabeto latino (como el ruso o japonés), al imprimirlos en el monitor serial, nos aparece como "basura".
+
* Solamente los caracteres ASCII están estandarizados en todas las regiones del mundo y librerías para Arduino; la codificación del rango extendido (la parte negativa del '''char''' o la que va de 128 a 255) suele variar según la implementación. Un típico ejemplo es el problema de imprimir la 'ñ' en el monitor serial, o imprimir el símbolo de grados ('°') en un LCD de caracteres; ambos están en la parte extendida, por eso puede darnos resultados inesperados. Es también por esta razón que si encontramos código con literales (cadenas de caracteres) de un idioma que no utiliza las letras del alfabeto latino (como el ruso o japonés), al imprimirlos en el monitor serial, nos aparece como "basura".
  
 
== Ejemplo 1 ==
 
== Ejemplo 1 ==
# Si revisas la tabla, habrás notado que sigue siendo la misma asignación. Recuerda que para asignar caracteres individuales, estos deben estar entre comillas simples.
 
 
# Es un dato de número decimal entero; por lo tanto esta asignación es válida.
 
# Es un dato de número decimal entero; por lo tanto esta asignación es válida.
 
# Es la misma asignación que el anterior, solo que el valor es hexadecimal. Puede ser útil ya que algunas veces nos dan la tabla con valores en hexadecimal.
 
# Es la misma asignación que el anterior, solo que el valor es hexadecimal. Puede ser útil ya que algunas veces nos dan la tabla con valores en hexadecimal.
 +
# Si revisas la tabla, habrás notado que sigue siendo la misma asignación. Recuerda que para asignar caracteres individuales, estos deben estar entre comillas simples.
 
<pre>
 
<pre>
 +
char caracter = 65;
 +
char caracter = 0x41;
 
char caracter = 'A';
 
char caracter = 'A';
char caracter = 65;
+
// Todos tienen el mismo valor a fin de cuentas
char caracter = 0x41;  //Son lo mismo
 
 
</pre>
 
</pre>
  

Revisión del 00:27 19 jun 2018

Descripción

Un char es un tipo de dato que normalmente se usa para almacenar caracteres. A diferencia de otros lenguajes, en Arduino (C++) ocupa 8 bits (1 byte); lo que provoca que, en muchas situaciones, char y byte sean lo mismo.

Es de 8 bits con signo, lo cual significa que comprende el rango de valores de -128 a 127. Un caracter, para efectos computacionales, en realidad es un número entero; y su relación símbolo-valor la podemos encontrar en la llamada Tabla ASCII. Es más, es posible realizar operaciones matemáticas sobre caracteres individuales debido a la razón anterior; pudiendo resultar en otro caracter.

Sintaxis

char variable [= valor]:

Parametros

variable
nombre de la variable.
valor
normalmente suele ser un carácter entre comillas simples. Parámetro opcional.

Advertencias

  • No es lo mismo asignar un valor entero que un caracter. Por ejemplo: 1 no es lo mismo que '1' ya que, según la tabla ASCII, este último en realidad equivale a 49. Sin embargo, ambos pueden convivir para ciertas funciones; como obtener el carácter que representa la unidad de un número entero:
int valor = 536;
char unidad = '0' + (valor % 10);
// A partir de aquí debería de tener asignado el caracter '6'
  • Solamente los caracteres ASCII están estandarizados en todas las regiones del mundo y librerías para Arduino; la codificación del rango extendido (la parte negativa del char o la que va de 128 a 255) suele variar según la implementación. Un típico ejemplo es el problema de imprimir la 'ñ' en el monitor serial, o imprimir el símbolo de grados ('°') en un LCD de caracteres; ambos están en la parte extendida, por eso puede darnos resultados inesperados. Es también por esta razón que si encontramos código con literales (cadenas de caracteres) de un idioma que no utiliza las letras del alfabeto latino (como el ruso o japonés), al imprimirlos en el monitor serial, nos aparece como "basura".

Ejemplo 1

  1. Es un dato de número decimal entero; por lo tanto esta asignación es válida.
  2. Es la misma asignación que el anterior, solo que el valor es hexadecimal. Puede ser útil ya que algunas veces nos dan la tabla con valores en hexadecimal.
  3. Si revisas la tabla, habrás notado que sigue siendo la misma asignación. Recuerda que para asignar caracteres individuales, estos deben estar entre comillas simples.
char caracter = 65;
char caracter = 0x41;
char caracter = 'A';
// Todos tienen el mismo valor a fin de cuentas

Ejemplo 2

  • Lo que se encierra entre comillas dobles se conoce como un literal; que básicamente es una matriz o vector de caracteres (en especial por los [] en el nombre de la variable).
char texto[] = "Hola mundo de Arduino!";

Vea también

Referencias