char!=(signed char), char!=(unsigned char) [duplicate]
특정 시나리오에서 C는 char를 처리합니다. int 및 그 변형과 달리 signed char 및 unsigned char를 고유한 유형으로 사용합니다. 이 동작은 C 표준에 설명된 대로 C의 문자 유형 특성에서 비롯됩니다.
Plain char, signed char, and unsigned char are three distinct types.
int는 일반적으로 signed int와 동의어이지만 char은 signed char 또는 unsigned char와 동일한 관계를 갖지 않습니다. . 즉, 이러한 유형에 대한 템플릿 특수화가 별도로 인스턴스화됩니다.
제공된 코드에서 세 가지 템플릿 특수화가 생성됩니다.
그러나 int의 경우 및 그 변형의 경우, 서명됨 또는 서명되지 않음으로 명시적으로 지정되지 않는 한 모두 동일한 유형으로 간주되기 때문에 하나의 템플릿 특수화만 생성됩니다.
따라서 주어진 예에서 출력에는 isX::ikIsX는 int8, uint8 및 char에 대한 유형 별칭이지만 int32, uint32 및 int에 대해서는 하나의 값만 표시합니다.
이러한 차이점은 템플릿 메타프로그래밍 및 유형 자체 검사를 사용할 때 이해하는 데 중요합니다. ㄷ.
위 내용은 `char`, `signed char` 및 `unsigned char`이 C 템플릿 특수화의 `int` 및 해당 변형과 다르게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!