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に関係なく、代わりにwhich を使用します。char

于 2013-04-27T00:43:00.637 に答える