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

C에서 `char`, `signed char` 및 `unsigned char`가 `int`, `signed int` 및 `unsigned int`와 다르게 처리되는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-26 22:37:03
원래의
274명이 탐색했습니다.

Why are `char`, `signed char`, and `unsigned char` Treated Differently from `int`, `signed int`, and `unsigned int` in C  ?

Char!=(Signed Char), Char!=(Unsigned Char)

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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