为什么我不能在此代码中测试我分配给符号(250)的ASCII值?当这不是我赋予符号的时候,测试-6似乎很奇怪。
#include <iostream>
using namespace std;
int main()
{
char symbol = 250; // dot symbol
int a = symbol;
cout << symbol << endl; // Outputs dot symbol
cout << a << endl; // Outputs -6
if(symbol == 250)
cout << "250 works";
if(symbol == -6)
cout << "-6 works"; // -6 test works
return 0;
}
答案 0 :(得分:6)
char
已在您的平台上签名。 250超出了签名字符的范围。你想要:
if (symbol == static_cast<char>(250))
否则symbol
将被提升为整数。或者,使用unsigned char
代替char
,可以签名也可以不签名。