私は非常に単純な 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 の値を出力すると奇妙なことが起こり、出力が -84 ではなく -19 として返されますが、次のプログラムを実行すると -:
#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++ を使用しています