Wein
2005-10-19 15:09:02 UTC
Hola a todos!
Quería comentar un caso que me ha pasado haciendo mis pinitos en C. Aún
estoy un poco verdecillo, pero he encontrado un problema al que no le
encuentro sentido.
Programando con el editor Dev-C++ 4.9.92, y simplificando el código al
máximo obtengo que...
#include <iostream>
int main()
{
int x=1;
char digito;
digito = '1';
printf("digito int: %d, digito char: %c \n\n", atoi(&digito),digito);
system("PAUSE");
return 0;
}
dando como resultado digito int: 1 char: 1. Hasta aquí todo correcto, pero
si inicializo la variable x (cabe recordar que la variable x no la uso, tan
solo la declaro e inicializo), por ejemplo a un numero entre el 48 al 57, me
da un valor distinto. Por ejemplo, si x=48, digito int me devuelve 10, x=49
digito int: 11...
Aún mas extraño, lo he probado en linux (Suse 9.3) y da el mismo error, pero
en MSVS 2003 lo hace bien!!
¿Podría tratarse de un error del compilador gcc g++? ¿Cómo podría
solucionarlo sin emigrar al MSVS?
Tropecé con ésto tratando de pasar el dígito de caracter a entero. Agradezco
la ayuda.
Quería comentar un caso que me ha pasado haciendo mis pinitos en C. Aún
estoy un poco verdecillo, pero he encontrado un problema al que no le
encuentro sentido.
Programando con el editor Dev-C++ 4.9.92, y simplificando el código al
máximo obtengo que...
#include <iostream>
int main()
{
int x=1;
char digito;
digito = '1';
printf("digito int: %d, digito char: %c \n\n", atoi(&digito),digito);
system("PAUSE");
return 0;
}
dando como resultado digito int: 1 char: 1. Hasta aquí todo correcto, pero
si inicializo la variable x (cabe recordar que la variable x no la uso, tan
solo la declaro e inicializo), por ejemplo a un numero entre el 48 al 57, me
da un valor distinto. Por ejemplo, si x=48, digito int me devuelve 10, x=49
digito int: 11...
Aún mas extraño, lo he probado en linux (Suse 9.3) y da el mismo error, pero
en MSVS 2003 lo hace bien!!
¿Podría tratarse de un error del compilador gcc g++? ¿Cómo podría
solucionarlo sin emigrar al MSVS?
Tropecé con ésto tratando de pasar el dígito de caracter a entero. Agradezco
la ayuda.