Solucionado - ¿Por qué no me imprime el valor entero en cout?. (char)

Iniciado por TØtti, 2 Febrero 2016, 01:32 AM

0 Miembros y 1 Visitante están viendo este tema.

TØtti

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:

Código (cpp) [Seleccionar]

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í:

Código (cpp) [Seleccionar]

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:

Código (cpp) [Seleccionar]
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];


engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

TØtti

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.


Orubatosu

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
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

Eternal Idol

#4
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.

Código (cpp) [Seleccionar]
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'.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón