[C++] 오버플로우와 언더플로우

dada·2024년 10월 23일
0

C++

목록 보기
5/7

1. 오버플로우와 언더플로우

1-1. 부호 없는 정수의 오버플로우와 언더플로우

: 부호 없는 정수 = unsigned int

#include <limits> // 헤더파일 불러오면 각 자료형의 max, min값 사용 가능

// Create two unsigned integer of maximum and minimum values
unsigned int num1 = numeric_limits <unsigned int> :: max();
unsigned int num2 = numeric_limits <unsigned int> :: min();

// Print the maximum and minimum values
cout << "The value of maximum unsigned int:" << num1 << endl; // 4294967295
cout << "The value of minimum unsigned int:" << num2 << endl; // 0

// Force the integers to overflow
num1 += 1; // overflow 발생시키기
num2 −= 1; // underflow 발생시키기

// Print the overflowed values
cout << "The value of num1 + 1 after overflow:" << num1 << endl; // 0
cout << "The value of num1 - 1 after underflow:" << num2 << endl; // 4294967295

1-2. 부호 있는 정수의 오버플로우와 언더플로우

#include <limits> // 헤더파일 불러오면 각 자료형의 max, min값 사용 가능

// Find the maximum and minimum of an integer
int num1 = numeric_limits <int> :: max();
int num2 = numeric_limits <int> :: min();

// Print the maximum and minimum values
cout << "Value of maximum signed int:" << num1 << endl; // 2147483647
cout << "Value of minimum signed int:" << num2 << endl; // -2147483648

// Cause num1 and num2 to overflow
num1 += 1; // overflow 발생시키기
num2 −= 1; // underflow 발생시키기 

// Print the overflowed values
cout << "The value of num1 + 1 after overflow:" << num1 << endl; // −2147483648
cout << "The value of num2 - 1 after underflow:" << num2 << endl; // 2147483647

1-3. Double 자료형의 오버플로우와 언더플로우

#include <limits> // 헤더파일 불러오면 각 자료형의 max, min값 사용 가능

// Find the positive and negative maximum double
double num1 = +numeric_limits <double> :: max ();
double num2 = −numeric_limits <double> :: max ();

// Print the positive and negative maximum double
cout << "The value of maximum double:" << num1 << endl; // 1.79769e+308
cout << "The value of minimum double:" << num2 << endl; // -1.79769e+308

// Multiply the values by 1000.00
num1 *= 1000.00; // overflow 발생시키기
num2 *= 1000.00; // underflow 발생시키기 

// Print the overflowed values
cout << "The value of num1 * 1000 after overflow:" << num1 << endl; // INF
cout << "The value of num2 * 1000 after underflow:" << num2 << endl; // −INF
  • INF: Infinity 무한대를 의미 → overflow 발생 시 INF, underflow 발생 시 -INF
profile
AI, Python 등 공부용 블로그

0개의 댓글