[C con Clase] Error al mostrar caracter no ASCII

Ángel isalorenz en telefonica.net
Dom Mayo 17 21:27:22 CEST 2009


Hola a todos, hace poco he topado con cierto misterio al que no consigo 
encontrar una explicación, se trata de una inquietud puramente intelectual, 
nada importante, así que si tenéis tiempo y alguna explicación... pues 
agradecido.

En C++, cuando intento mostrar en consola un carácter fuera del Standard 
ASCII, por ejemplo 'ñ' la salida es bastante inesperada:

char c;
int i;

    c = 'ñ'; // 'ñ' tiene, debería tener el código 164
    i  = c;

std::cout <<  c  << std::endl;//muestra el caracter '+-'
std::cout <<  i  << std::endl;//correspondiente al código -15 equivalente a 
241

Sin embargo si:

    i  = 164;
    c = i;

std::cout <<  c  << std::endl;//muestra el caracter 'ñ'
std::cout <<  i  << std::endl;//correspondiente al código 164

¿Alguna idea de por qué no funciona en el primer caso? 





Más información sobre la lista de distribución Cconclase