, 내가 상황을 설명하자 - :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;
}
을 지금 내가있는 'A'로 C의 값을 입력 위의 프로그램을 실행할 때 스페인어 문자 집합 및 "Alt + 160"Windows에서 입력 한 및 내 컴퓨터가 서명 된 char 같은 일반 오래된 char 구현하기 때문에 위의 프로그램 출력을 때 á의 정수 값을 -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++을 사용하고있다.
많은 시스템에서 'á'은 [UTF-8] (http://en.wikipedia.org/wiki/UTF-8)로 * 두 * 바이트로 표시됩니다 .... –
무엇을 얻을 수 있습니까? 'cout << (int) ('á');'? –
@ArneMertz : 값으로 -31을 얻습니다. – AnkitSablok