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 |