16 비트의 정수 데이터 및 문자 데이터가 이제는 구분 가능하지만 8 비트의 정수 및 문자 데이터는 그렇지 않으므로 "설계가 마음에 들지 않는다"와 같이 보입니다.왜 wchar_t/unsigned short가 이제 별개이지만 char/unsigned 바이트 구분이 없습니까?
C++은 8 비트 값 'char'에 대해 항상 유일한 선택이었습니다. 그러나 wchar_t를 부호없는 short와 공식, 고유 한 유형으로 인식하면 향상된 기능을 사용할 수 있지만 넓은 문자열 사용자의 경우에만 사용할 수 있습니다. 이것이 조정되지 않은 것 같습니다. 언어는 8 비트 및 16 비트 값에 대해 다르게 작동합니다.
더 명확한 유형이 있으면 분명 가치가 있다고 생각합니다. 별개의 8 비트 char AND 및 8 비트 "byte"를 사용하면 훨씬 더 좋을 것입니다. 연산자 오버로딩 사용법. 예를 들면 : 당신이 좁거나 넓은 문자열을 사용하는 경우에 관계없이 더 유사하게 동작보다 지능적인 과부하 및 과부하를 활성화 것이다 도입 된 새로운 8 비트 정수 타입이 있다면
// This kind of sucks...
BYTE m = 59; // This is really 'unsigned char' because there is no other option
cout << m; // outputs character data ";" because it assumes 8-bits is char data.
// This is a consequence of limited ability to overload
// But for wide strings, the behavior is different and better...
unsigned short s = 59;
wcout << s; // Prints the number "59" like we expect
wchar_t w = L'C'
wcout << w; // Prints out "C" like we expect
는 언어는 일관성을 것입니다 .
'wchar_t'가 16 비트 일 필요는 없다고 말하면 마음이 아프겠습니까? 아니면 확실하게'CHAR_BIT == 8' 환경에서 2 바이트가 될까요? –
또는'wchar_t' /'unsigned short'는 항상 구별되어 있습니까? –
나는 wchar_t가 얼마나 넓은 지 상관하지 않는다고 생각한다. 요점은 char와는 달리 정수와 혼동 될 수 없다는 것이다. 또한 char16_t 및 char32_t도 중요합니다. – VoidStar