> 백엔드 개발 > C++ > 본문

C 템플릿에서 char이 signed char 및 unsigned char와 별개의 유형으로 간주되는 이유는 무엇입니까?

DDD
풀어 주다: 2024-10-29 06:04:31
원래의
901명이 탐색했습니다.

Why is char considered a distinct type from signed char and unsigned char in C   Templates?

char!=(signed char), char!=(unsigned char)

이 질문은 char 데이터 유형의 동작을 탐색합니다. C는 int와 같은 다른 정수 유형과 비교됩니다. 특히 char는 signed char 및 unsigned char 모두와 별개의 유형으로 처리된다는 관찰을 다룹니다.

C 표준은 char, signed char 및 unsigned char를 세 가지 개별 유형으로 정의합니다. 동일한 양의 저장 및 정렬 요구 사항을 공유하지만 값 표현과 비트 패턴은 서로 다릅니다. 부호 없는 문자 유형의 경우 모든 비트 패턴은 숫자를 나타냅니다. 그러나 char 또는 signed char의 경우 반드시 그런 것은 아닙니다.

질문의 예제 코드는 이러한 동작의 차이를 보여줍니다. int8(서명된 char), uint8(unsigned char) 및 char에 대한 템플릿 특수화가 생성되면 세 가지 별도의 인스턴스화가 생성됩니다. 이는 컴파일러가 char를 다른 두 유형과 별개의 유형으로 처리하기 때문입니다.

반대로 int, int32 및 uint32에 대해 템플릿 특수화가 생성되면 int 및 int32에 대해 하나의 인스턴스화만 생성됩니다. 같은 유형으로 간주됩니다. 그러나 Signed int는 별도의 유형으로 처리되며 자체 템플릿 전문화를 생성합니다.

이 동작은 char, signed char 및 unsigned char가 세 가지 다른 유형임을 명시하는 C 표준과 일치합니다. 따라서 템플릿 전문화에서는 이를 고유한 유형으로 처리하는 것이 옳습니다.

위 내용은 C 템플릿에서 char이 signed char 및 unsigned char와 별개의 유형으로 간주되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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