[C con Clase] Variales char
Steven Davidson
steven en conclase.net
Jue Ene 25 07:27:20 CET 2007
Hola Alejandro y Santiago,
El pasado 2007-01-24 19:56:40, Alejandro escribió:
A> Hola, somos dos chavales gallegos de 13 años que estamos empezando a programar en C++. Nos gustaría saber algo más sobre las variables "char". Especificando, en el curso decís que las variables charsirven para almacenar números, pero, en un programa como éste:
Antes de seguir, quiero decir que voy a agregar a lo que ya ha mencionado Lucas.
A> #include<iostream>
A> using namespace std;
A> int main()
A> {
A> char a;
A>
A> a = 1;
A> cout << a;
A>
A> cin.get();
A> return 0;
A> }
A> Lo que se muestra al final en pantalla es una carita sonriente en color blanco.
A> Sin embargo, si defines 'a = 65;' el resultado es la letra a en min´´uscula. ¿Alguien me explica qué pasa? Lo que yo creo es que las variables char SÓLO almacenan números, no los muestran. Porque en este programa:
Casi. Tienes que tener claro que está lo que existe en una variable, como es 'a', y lo que hace 'cout <<' con ese valor en 'a'. En otras palabras, no confundas la interpretación que hace 'cout <<' con lo que realmente hay en 'a'.
'cout <<' interpreta un valor de tipo 'char' como una representación de un carácter - un símbolo: letra, dígito, signo, etcétera. Internamente, un valor de tipo 'char' es un número entero. Por ejemplo, el valor de 65 equivale a la letra 'A'; el valor de 32 es el espacio, ' '; etc.. El estándar es usar la tabla ASCII que establece las correspondencias del código numérico con su carácter. 'cout <<' sigue estas interpretaciones den cuanto "vea" un valor de tipo 'char'. Esto es porque se diseñó el tipo 'char' para representar caracteres, aunque internamente son números enteros.
A> #include<iostream>
A> using namespace std;
A> int main()
A> {
A> char a;
A> int b;
A>
A> a = 10;
A> b = a * a;
A> cout << b;
A>
A> cin.get();
A> return 0;
A> }
A> El resultado es cien. Decid me, por favor, si estoy en lo cierto.
Para poder mostrar el número entero en un 'char' con 'cout <<', tendremos que "engañar" a 'cout <<' para que interprete el 'char' como un número entero. Lo más fácil es hacer un cásting, o como has hecho anteriormente, usar una variable intermedia de otro tipo entero. Por ejemplo,
char a = 65;
cout << "a = " << (int) a << endl;
O como has intentado hacer,
char a = 65;
int aux = a;
cout << "a = " << aux << endl;
Espero haber complementado el comentario de Lucas.
Steven
Más información sobre la lista de distribución Cconclase