conversion de char a int
¿Cómo puedo convertri un char a entero?no me deja hacerlo explícitamente (int) variable_char.
Hablando de convertir un char a entero...
En realidad no hay nada que convertir. Una constante de caracter se representa como un valor entero: decir 'a' es lo mismo que decir 97; la representación para los dos es la misma. En todo caso, la única diferencia es dónde la ponemos.
Como muestra de "conversión":
char letra = 'a';
int numero = letra; // numero = 97;
numero = 98;
letra = numero; // letra = 'b';
Como un char es un tipo de dato entero, puede ser con o sin signo, y si vamos a usar el abecedario del castellano, con eñes y acentos, convendrá que nuestros char sean unsigned, para no tener números negativos como representación de caracteres más allá del 127.
Si se trata de interpretar el caracter '0' como un entero de valor 0 (cero), podemos hechar mano de la tabla ASCII, donde al caracter '0' le corresponde el decimal 48.
Afortunadamente los que escribieron esa tabla tuvieron la getileza de poner los números en orden, al '1' le corresponde el 49, ... y así hasta el '9' (57).
Para probar acá va un ejemplillo:
//--------------------------------
unsigned char car;
int entero;
do {
cout << "ncaracter: ";
cin >> car;
entero = car; // ni cast ni atoi ni baticamisetas térmicas.
cout << "decimal: " << entero;
// para probar con caracteres entre '0' y '9':
cout << "; menos 48= " << entero-48 << endl;
} while(car != '*'); // un asterisco para salir
//-------------------------------
Alejandro
En realidad no hay nada que convertir. Una constante de caracter se representa como un valor entero: decir 'a' es lo mismo que decir 97; la representación para los dos es la misma. En todo caso, la única diferencia es dónde la ponemos.
Como muestra de "conversión":
char letra = 'a';
int numero = letra; // numero = 97;
numero = 98;
letra = numero; // letra = 'b';
Como un char es un tipo de dato entero, puede ser con o sin signo, y si vamos a usar el abecedario del castellano, con eñes y acentos, convendrá que nuestros char sean unsigned, para no tener números negativos como representación de caracteres más allá del 127.
Si se trata de interpretar el caracter '0' como un entero de valor 0 (cero), podemos hechar mano de la tabla ASCII, donde al caracter '0' le corresponde el decimal 48.
Afortunadamente los que escribieron esa tabla tuvieron la getileza de poner los números en orden, al '1' le corresponde el 49, ... y así hasta el '9' (57).
Para probar acá va un ejemplillo:
//--------------------------------
unsigned char car;
int entero;
do {
cout << "ncaracter: ";
cin >> car;
entero = car; // ni cast ni atoi ni baticamisetas térmicas.
cout << "decimal: " << entero;
// para probar con caracteres entre '0' y '9':
cout << "; menos 48= " << entero-48 << endl;
} while(car != '*'); // un asterisco para salir
//-------------------------------
Alejandro
