我只是在使用一个非常简单的 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;
}
现在,当我执行上述程序时,我将 c 的值输入为 'á',它在西班牙语字符集中,在 Windows 中键入为“Alt + 160”,因为我的计算机将普通旧字符实现为上面的签名字符程序将'á'的整数值输出为-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++