Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: TØtti en 2 Febrero 2016, 01:32 am



Título: Solucionado - ¿Por qué no me imprime el valor entero en cout?. (char)
Publicado por: TØtti en 2 Febrero 2016, 01:32 am
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
  1. char carac2[3];
  2.  
  3. carac2[0] = 'a';
  4. carac2[1] = 20;
  5. carac2[2] = 30;
  6.  
  7. cout<<"carac2[0] "<<carac2[0]<<"\ncarac2[1] "<<carac2[1]<<"\ncarac2[2] "<<carac2[2];
  8.  

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
  1. cout<<carac2[0]<<endl;
  2. cout<<carac2[1]<<endl;
  3.  

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
  1. carac2[0] = 20;
  2. carac2[1] = 'b'; // caracter ASCII
  3. carac2[2] = 'c'; // caracter ASCII
  4.  
  5. cout<<"carac2[0] "<<(int)carac2[0]<<"\ncarac2[1] "<<carac2[1]<<"\ncarac2[2] "<<carac2[2];


Título: Re: ¿Por qué no me imprime el valor en cout?.
Publicado por: 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


Título: Re: ¿Por qué no me imprime el valor en cout?.
Publicado por: TØtti en 2 Febrero 2016, 02:50 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.



Título: Re: ¿Por qué no me imprime el valor en cout?.
Publicado por: Orubatosu en 2 Febrero 2016, 09:05 am
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


Título: Re: ¿Por qué no me imprime el valor en cout?.
Publicado por: Eternal Idol en 2 Febrero 2016, 09:35 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
  1. cout<<"carac2[0] "<<carac2[0]<<"\ncarac2[1] "<< (int)carac2[1]<<"\ncarac2[2] "<<(int)carac2[2];

Como alternativa puedes intentar el truco de restarle "0" al valor para forzar una conversión a tipo entero

Seria '0'.