从 int 到 char 的转换失败,控制台打印出奇怪的符号

Conversion from int to char failed and console prints weird symbol

我遇到了一个奇怪的问题,我不知道如何解释。当我 运行 此代码时,它会打印此符号 -> 。 这是我的代码:

#include <iostream>

int main() {
     int num = 1;
     char number = num;

     std::cout<<number<<std::endl;

     system("PAUSE");
     return 0;
}

我不明白为什么。通常它应该将整数转换为字符。我正在使用 Dev C++,我的语言标准是 ISO C++11。我已经编程 4 年了,这是我第一次得到这样的东西。我希望我解释了我的问题,如果有人能帮助我,我将不胜感激。

Conversion from int to char failed

实际上,int 已成功转换为 char。

Normally it should convert the integer to char.

它就是这么做的。转换的结果是值为 1 的 char。

计算机使用 "character encoding"。您在屏幕上看到的每个符号都被编码为一个数字。例如(假设 ASCII 或兼容编码)'a' 字符的值为 97.

值为 1 的 char 不同于具有对字符“1”进行编码的值的 char。因此,当您打印值为 1 的字符时,您看不到数字 1,而是看到值 1 编码的字符。在 ASCII 和兼容编码中,1 编码一个不可见的符号 "start of heading".


I wanted to print 1 as a char.

你可以这样做:

std::cout << '1' << '\n';

然后,4 年以来你似乎误解了 char 是什么。它不直接是一个字符,而是一个数字。是 编码 将该数字转换为可读字符。

本质上,char i=1char i='1' (ascii table) 不同。