정수 승격(Integer Promotion)란?

C 언어에서 int보다 작은 정수형(char, short, 비트 필드 등)의 값을 연산 전에 int(int로 나타낼 수 없는 경우에는 unsigned int)로 변환하는 규칙. 따라서 8비트인 uint8_t끼리의 덧셈도 int의 폭으로 계산되며, ~를 붙인 결과는 상위 비트까지 1이 된다. 결과를 작은 형의 변수에 대입할 때 그 형의 폭으로 되돌려진다. 부호 있는 값과 부호 없는 값을 섞은 연산에서 형을 맞추는 '일반 산술 변환'과 함께 비교나 비트 연산의 결과에 영향을 준다.

일본어 명칭: 整数拡張

정수 승격(Integer Promotion)은(는) C 언어 기초 등 1개 분야의 연습 문제 2개에 나와요.

분야: C 언어 기초

해설 속 정수 승격(Integer Promotion)

정수 승격(Integer Promotion)이(가) 나오는 문제 (2)

  1. unsigned char는 8비트, int는 32비트로 한다. 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  2. uint8_t는 8비트의 부호 없는 정수형, int는 32비트로 한다. 위의 코드를 실행했을 때의 결과로 올바른 것은?

관련 용어

마이컴(마이크로컨트롤러) 공용체(union) 구조체(struct) 댕글링 포인터(Dangling Pointer) 동적 메모리 할당(Dynamic Memory Allocation) 매크로(Macro) 메모리 누수(Memory Leak) 미정의 동작(Undefined Behavior) 버퍼 오버플로(Buffer Overflow) 비트 필드(Bit-field)

용어집으로 돌아가기