elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Solucionado - ¿Por qué no me imprime el valor entero en cout?. (char)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Solucionado - ¿Por qué no me imprime el valor entero en cout?. (char)  (Leído 1,841 veces)
TØtti

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Solucionado - ¿Por qué no me imprime el valor entero en cout?. (char)
« 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];


« Última modificación: 2 Febrero 2016, 13:58 pm por TØtti » En línea

engel lex
Colaborador
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: ¿Por qué no me imprime el valor en cout?.
« Respuesta #1 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


En línea

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

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: ¿Por qué no me imprime el valor en cout?.
« Respuesta #2 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.

En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: ¿Por qué no me imprime el valor en cout?.
« Respuesta #3 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
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.701


15 años en el foro.


Ver Perfil WWW
Re: ¿Por qué no me imprime el valor en cout?.
« Respuesta #4 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'.
« Última modificación: 2 Febrero 2016, 09:36 am por Eternal Idol » En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] pasar un entero a char*
Programación C/C++
KandiZickZad 1 5,083 Último mensaje 2 Mayo 2011, 08:01 am
por leogtz
[Opinión] Interesante manera de usar char* con cout « 1 2 »
Programación C/C++
Shout 14 4,589 Último mensaje 26 Julio 2013, 04:09 am
por rir3760
Castear un entero a un char en C++
Programación C/C++
gibranini 2 1,510 Último mensaje 13 Octubre 2014, 06:03 am
por gibranini
(Ayuda) Error al modificar el valor de un char en una cadena const char *
Programación C/C++
Seyro97 4 4,272 Último mensaje 2 Julio 2015, 15:17 pm
por Seyro97
Detectar ENTER pero como tipo entero y no Char
Programación C/C++
Detectorup 4 534 Último mensaje 18 Diciembre 2018, 16:15 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines