扩展的ASCII字符C ++

时间:2013-04-27 00:42:22

标签: c++ ascii extended-ascii

为什么我不能在此代码中测试我分配给符号(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;
}

1 个答案:

答案 0 :(得分:6)

char已在您的平台上签名。 250超出了签名字符的范围。你想要:

if (symbol == static_cast<char>(250))

否则symbol将被提升为整数。或者,使用unsigned char代替char,可以签名也可以不签名。