从 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=1
与 char i='1'
(ascii table) 不同。
我遇到了一个奇怪的问题,我不知道如何解释。当我 运行 此代码时,它会打印此符号 -> 。 这是我的代码:
#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=1
与 char i='1'
(ascii table) 不同。