1

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

1 回答 1

6

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

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

否则symbol将提升为整数。或者,使用可能会或可能不会签名unsigned char的来代替。char

于 2013-04-27T00:43:00.637 回答