> 백엔드 개발 > C++ > `char`, `signed char` 및 `unsigned char`이 C 템플릿 특수화의 `int` 및 해당 변형과 다르게 동작하는 이유는 무엇입니까?

`char`, `signed char` 및 `unsigned char`이 C 템플릿 특수화의 `int` 및 해당 변형과 다르게 동작하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-26 19:01:30
원래의
393명이 탐색했습니다.

Why do `char`, `signed char`, and `unsigned char` behave differently from `int` and its variants in C   template specializations?

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와 동일한 관계를 갖지 않습니다. . 즉, 이러한 유형에 대한 템플릿 특수화가 별도로 인스턴스화됩니다.

제공된 코드에서 세 가지 템플릿 특수화가 생성됩니다.

  • isX::ikIsX(서명된 문자의 경우) )
  • isX::ikIsX(부호 없는 문자의 경우)
  • isX::ikIsX(일반 문자의 경우)

그러나 int의 경우 및 그 변형의 경우, 서명됨 또는 서명되지 않음으로 명시적으로 지정되지 않는 한 모두 동일한 유형으로 간주되기 때문에 하나의 템플릿 특수화만 생성됩니다.

따라서 주어진 예에서 출력에는 isX::ikIsX는 int8, uint8 및 char에 대한 유형 별칭이지만 int32, uint32 및 int에 대해서는 하나의 값만 표시합니다.

이러한 차이점은 템플릿 메타프로그래밍 및 유형 자체 검사를 사용할 때 이해하는 데 중요합니다. ㄷ.

위 내용은 `char`, `signed char` 및 `unsigned char`이 C 템플릿 특수화의 `int` 및 해당 변형과 다르게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿