본문 바로가기

Software/C언어

[C언어] unsigned 자료형 사용 시 주의사항

728x90

unsigned 두 변수를 빼는 연산을 통해 결과가 음수가 나온 값을 다시 unsigned 변수에 넣으면 0이 저장될 거라고 생각했는데,

 

실제로 해보니 0이 아니고 언더플로우가 발생하여 결과 출력됨

 

#include <stdio.h>

int main(void) {
// your code goes here

unsigned int a = 10;
unsigned int b = 15;
unsigned int result = 0;

result = a - b;
printf("result = %u\r\n", result);
return 0;
}

 

[출력]

result = 4294967291

 

그러므로 결과값이 음수가 나올 확률이 있다면, unsigned 자료형으로 하지 않아야 한다.

해결방법은 조건문을 거쳐서 0을 도출함.

unsigned int a = 10;
unsigned int b = 15;
int result = 0;

result = a - b;

if(result < 0) result = 0;

728x90

'Software > C언어' 카테고리의 다른 글

PID 제어  (0) 2024.06.26
[C언어] 문자열 입출력 함수  (0) 2020.10.08
[C언어] 기본 입출력 함수  (0) 2020.10.05
[C언어] visual studio 기본 사용법  (0) 2020.09.24
[C언어] #include 의 " " 와 < > 의 차이  (0) 2020.09.23