C 프로그래밍에서 char, signed char 및 unsigned char는 서로 다른 데이터 유형으로 간주됩니다. . 이 동작은 정수와 다릅니다. 여기서 int와 signed int는 동일한 유형이고 unsigned int는 또 다른 별도의 유형입니다.
질문:
왜 아래 코드는 int 유형과 char에 대해 다르게 컴파일됩니까?
cout << getIsTrue< isX<int8>::ikIsX >() << endl; cout << getIsTrue< isX<uint8>::ikIsX >() << endl; cout << getIsTrue< isX<char>::ikIsX >() << endl;
답변:
C에서는 char, signed char 및 unsigned char를 세 가지 개별 유형으로 구분합니다. 이것이 char, int8 및 uint8에 대한 템플릿 인스턴스화가 서로 다른 이유입니다.
그러나 정수의 경우 int와 signed int는 동일한 유형이고 unsigned int는 다른 유형입니다. 이것이 int, int32 및 uint32에 대한 템플릿 인스턴스화로 인해 두 개의 고유한 템플릿만 생성되는 이유입니다.
표준 [basic.fundamental](https://eel.is/cdraft/basic.fundamental)에는 다음과 같이 명시되어 있습니다. :
"일반 문자, 부호 있는 문자, 부호 없는 문자는 서로 다른 세 가지 유형입니다."
즉, 구현에 따라 서로 다른 객체 표현이 있고 서로 다른 값 범위를 가질 수 있습니다.
위 내용은 C에서 `char`, `signed char` 및 `unsigned char`가 `int`, `signed int` 및 `unsigned int`와 다르게 처리되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!