я просто играл с символами, используя очень простой C++ программу, позвольте мне объяснить ситуацию -:Несогласованная арифметика с символами на C++?
#include<iostream>
int main(){
char c;
std :: cin >> c;
std :: cout << "The integer value of character entered is : " << int(c) << '\n';
int m = 12 + 'á';
std :: cout << m << '\n';
return 0;
}
теперь, когда я исполняю выше программы я ввожу значение с как «», который находится в spanish character set и набирается как «Alt + 160» в Windows, и поскольку мой компьютер реализует простой старый символ в качестве подписанного символа, вышеуказанная программа выводит целочисленное значение «á» как -96, но странная вещь возникает, когда я выводю значение m возвращает выход как -19 вместо -84, а если я выполняю следующую программу -:
#include<iostream>
int main(){
signed char c;
std :: cin >> c;
std :: cout << "The integer value of character entered is : " << int(c) << '\n';
int m = 12 + c;
std :: cout << m << "\n";
return 0;
}
Я получаю правильное значение вывода, теперь меня путают, почему это происходит, если каждый символ поддерживается некоторым числом на компьютере, то почему не выражение m = 12 + 'á' оценивается как m = 12 + (-96). Пожалуйста, просветите меня по этому вопросу. Я использую Windows 7 и Dev C++
На многих системах 'á' представлен в [UTF-8] (http://en.wikipedia.org/wiki/UTF-8) на * two * bytes .... –
что вы получаете с 'cout << (int) ('á');'? –
@ArneMertz: Я получаю значение -31 как значение – AnkitSablok