一段程序为什么会出现这样的结果

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:30:45
#include <iostream>

using namespace std;

int main()
{
int a=-9;
char ch=(int)a;
cout<<ch;
if (ch=='\0')
cout<<"1";
else
cout<<"2";

return 0;

}

输出的是问号,把2换成b等字母则出现不认识的汉字,似乎是ch与else的输出合成的,少哪个都不是这个样子,求教!

问题在 cout<<ch; 这一句上。
a=-9, 十六进制是 0xFFFFFFF7; 所以ch=0xF7.
cout<<ch; cout<<"2";
连起来就是0xf7,0x32; 输出为不能识别,得到?.
cout<<ch; cout<<"b";
连起来就是0xf7,0x62; 恰巧鱞的编码是f762,所以经过输出鱞字。
解决办法很简单。删掉cout<<ch; 或者把 cout<<ch; 改成 cout<<ch<<endl; 加上换行符。