>  기사  >  백엔드 개발  >  C에서 `char`, `signed char` 및 `unsigned char`가 `int`, `signed int` 및 `unsigned int`와 다르게 처리되는 이유는 무엇입니까?

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

Barbara Streisand
Barbara Streisand원래의
2024-10-26 22:37:03275검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.