Hola, ¿Qué tal?, soy nuevo en este foro y en el lenguaje de C++. La cuestión es que estoy recién iniciando (días) por lo cual me puse a experimentar e hice el siguiente código:
char carac2[3];
carac2[0] = 'a';
carac2[1] = 20;
carac2[2] = 30;
cout<<"carac2[0] "<<carac2[0]<<"\ncarac2[1] "<<carac2[1]<<"\ncarac2[2] "<<carac2[2];
El problema es que me imprime correctamente solo 'a', los demás salen con otros símbolos.
http://prntscr.com/9xvaek (foto)
Según lo que leí, char, es básicamente para guardar datos pequeños asi que deduzco que tenga algo ver, pero si lo pongo directamente así:
cout<<carac2[0]<<endl;
cout<<carac2[1]<<endl;
si que lo imprime bien. Entonces, ¿En qué estoy fallando?.
*Edit (solucionado)
Vale muchas gracias chicos por la ayuda.
- char solo es usado para caracteres. Por lo cual, cuando intento almacenar un valor entero (10-20), le estaremos diciendo que nos muestre su representación en la tabla ASCII. Asi que debo usar una variable de tipo entero (int).
Sin embargo puedo usar un Casting a int, asi cout lo interpretará como numero y no como carácter. Ejemplo:
carac2[0] = 20;
carac2[1] = 'b'; // caracter ASCII
carac2[2] = 'c'; // caracter ASCII
cout<<"carac2[0] "<<(int)carac2[0]<<"\ncarac2[1] "<<carac2[1]<<"\ncarac2[2] "<<carac2[2];
El asunto aquí va sobre la tabla ASCII
cuando colocas "a" representa 92, pero cuando colocas 10 y 20 representan los carácteres respectivos a dichos números
Cita de: engel lex en 2 Febrero 2016, 02:37 AM
El asunto aquí va sobre la tabla ASCII
cuando colocas "a" representa 92, pero cuando colocas 10 y 20 representan los carácteres respectivos a dichos números
osea, que no puedo poner un valor numérico directo en un char?. Al menos para poder imprimir 10-20 y no sus representaciones.
Gracias.
Char puede contener un valor entero típicamente de un byte, su utilidad es el manejo de caracteres.
El número 10 consta de dos dígitos, es recomendable usar en esos casos el tipo int
Como alternativa puedes intentar el truco de restarle "0" al valor para forzar una conversión a tipo entero
Cita de: TØtti en 2 Febrero 2016, 02:50 AM
osea, que no puedo poner un valor numérico directo en un char?. Al menos para poder imprimir 10-20 y no sus representaciones.
Gracias.
Haciendo un casting a int podes, asi cout interpretara que es un numero y no un caracter.
cout<<"carac2[0] "<<carac2[0]<<"\ncarac2[1] "<< (int)carac2[1]<<"\ncarac2[2] "<<(int)carac2[2];
Cita de: Orubatosu en 2 Febrero 2016, 09:05 AMComo alternativa puedes intentar el truco de restarle "0" al valor para forzar una conversión a tipo entero
Seria '0'.