C 언어 기초

C 언어 규격에서 int형의 크기에 대해 정해져 있는 것으로 올바른 것은?

  1. A어느 처리계에서나 32비트로 정해져 있다
  2. B적어도 16비트라는 것만 정해져 있고, 실제 크기는 처리계가 정한다
  3. CCPU의 주소 폭과 같다고 정해져 있어, 64비트 CPU에서는 64비트가 된다
정답과 해설 보기

정답: B. 적어도 16비트라는 것만 정해져 있고, 실제 크기는 처리계가 정한다

C 언어 규격은 int가 적어도 −32767~32767을 나타낼 수 있을 것(즉 16비트 이상)만을 요구하며, 실제 크기는 처리계(컴파일러와 대상 CPU의 조합)가 정합니다. 16비트 마이컴용 컴파일러에서는 int가 16비트인 경우가 있고, 대부분의 PC나 32비트 마이컴에서는 32비트입니다. 64비트 Linux나 Windows에서도 int는 일반적으로 32비트 그대로이며, 포인터가 64비트가 됩니다. 정해진 크기의 정수가 필요할 때는 stdint.h의 int32_t 등을 사용합니다.

이 분야 연습하기 분야로 돌아가기

C 언어 기초의 다른 문제

  1. 임베디드 프로그램에서 32비트 주변 장치 레지스터의 값을 넣는 변수를 unsigned int가 아니라 stdint.h의 uint32_t로 선언하는 경우가 많다. 주된 이유로 올바른 것은?
  2. 정수끼리의 나눗셈을 포함하는 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  3. 전위와 후위 ++를 사용한 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  4. if 문의 조건에 =를 쓴 위의 코드를 실행했을 때의 출력으로 올바른 것은?
  5. 레지스터 값 reg의 비트 2가 1인지를 조사할 생각으로 위의 코드를 작성했다. 실행했을 때의 결과로 올바른 것은?