我正在使用C / C ++代码将char转换为其整数值,然后需要将其打印回char值。
但是,当我尝试使用printf函数打印“扩展ASCII”字符时,它会显示一个不同的字符,我无法弄清楚是什么问题。
int charInt = (int) 'á'; // -31
char casted = (char) charInt;
printf("%c\n", casted); // ß
如果我调试代码(我使用的是Visual Studio 2017),变量“ casted ”会在IntelliSense中显示正确的“á”值。
我测试了一些打印这个角色的不同方法,但它总是有相同的结果:
printf("test: %d\n", (signed char)'á'); // -31
printf("test: %d\n", (unsigned char)'á'); // 225
printf("test: %c\n", -31); // ß
printf("teste: %s\n", "á"); // ß
printf("test: %c\n", 225); // ß
printf("test: %d\n", 'á'); // -31
putc(-31, stdout); // ß
我做错了什么?
答案 0 :(得分:0)
正如我对问题的评论中所说,这是一个语言环境问题。
我只需要使用setlocale(),控制台中的输出就会起作用。