Lee Jaeyoon2
재유니버스
Lee Jaeyoon2
전체 방문자
오늘
어제
  • 분류 전체보기 (228)
    • TIL (165)
    • 생각 (11)
    • 서평 (1)
    • JavaScript & TypeScript (4)
    • React (0)
    • C (45)
    • 에러 핸들링 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코드숨
  • 회고
  • 5F
  • c언어
  • C언어 코딩 도장
  • dotenv
  • 코드숨 리액트 8기
  • 실수
  • 객체
  • TiL
  • 변수
  • dotenv-webpack
  • 코드숨 리액트
  • C
  • 코딩 도장
  • JavaScript
  • map
  • react
  • 플래그
  • 심사 문제

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lee Jaeyoon2

재유니버스

C

[C] C 언어 코딩 도장 7.11 심사문제: 정수형 변수 선언과 오버플로우

2022. 4. 25. 13:04

다음 소스 코드를 완성하여 0 0 -128이 출력되게 만드세요.

 

표준 출력

0 0 -128

 

judge_integer_overflow.c

#include <stdio.h>

int main()
{
    __________________
    __________________
    __________________
    
    num1 = 65536;
    num2 = 4294967296;
    num3 = 128;
    
    printf("%u %u %d\n", num1, num2, num3);
    
    return 0;
}

 

정답

unsigned short int num1;
unsigned long int num2;
char num3;

 

풀이

num1과 num2에 값을 할당할 때 분명 0이 아닌 수로 할당했는데, 출력에 0으로 나왔다. 아! 이것은 오버플로우구나!

그렇다. 근데 음수가 아닌 0으로 나왔다는 것은 unsigned형 변수이다. 그러면 이제 할당한 숫자로 short int인지,

int인지, long int인지를 판별해야 하는데 unsigned short int가 2바이트, 16비트이므로 2의 16 제곱 값만큼 표현할 수 있다.

따라서, unsigned short int의 범위는 0~65,535이고, num1에 65,536을 할당했는데 출력이 0이므로 num1은 unsigned short int이다. (int는 생략해도 상관없다)

다음, num2에 4294967296을 할당했을 때 0, 즉 2의 32제곱의 출력 값이 0이면 32비트 4바이트 정수 자료형이고

이에 해당하는 정수 자료형은 unsigned int, unsigned long, unsigned long int(short처럼 int는 생략해도 상관없다)가 있다. 

마지막으로 128을 할당했는데 -128이 됐다. 이것은 unsigned형 변수가 아니다. 게다가 범위가 -128~127이니깐,

256은 2의 8 제곱이므로 8비트 1바이트. 이에 해당하는 정수 자료형은 char이다.

'C' 카테고리의 다른 글

[C] C언어 코딩 도장 7.13 심사문제: 최솟값 표현하기  (0) 2022.04.25
[C] C언어 코딩 도장 7.12 심사문제: 자료형 크기 구하기  (0) 2022.04.25
[C] C언어 코딩 도장 5.6 심사문제: 변수를 선언하고 값 할당하기  (0) 2022.04.25
[C] C언어 코딩 도장 3.10 심사문제: 서식 지정자 사용하기  (0) 2022.04.25
[C] C언어 코딩 도장 3.9 심사문제: 문자열 출력하기  (0) 2022.04.25
    'C' 카테고리의 다른 글
    • [C] C언어 코딩 도장 7.13 심사문제: 최솟값 표현하기
    • [C] C언어 코딩 도장 7.12 심사문제: 자료형 크기 구하기
    • [C] C언어 코딩 도장 5.6 심사문제: 변수를 선언하고 값 할당하기
    • [C] C언어 코딩 도장 3.10 심사문제: 서식 지정자 사용하기
    Lee Jaeyoon2
    Lee Jaeyoon2

    티스토리툴바