Расширенный ASCII-символ Переполнение стека

Почему я не могу проверить значение ASCII, которое я назначаю символу (250) в этом коде? Кажется странным тестировать на -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

Решение

char подписано на вашей платформе. 250 вне диапазона для подписанного персонажа. Ты хочешь:

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

Иначе symbol будет повышен до целого числа. В качестве альтернативы используйте unsigned char вместо char который может или не может быть подписан.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]