본문 바로가기
c언어

c언어 signed, unsigned 수식자 알아보기

by 개발자 L 2022. 11. 27.
반응형

c언어 signed, unsigned 수식자 알아보기

네 안녕하세요, 이번 포스팅에서는 c언어에서 사용하는 수식자인 signed, unsigned 수식자에 대하여 한 번 써보려고 합니다.

보통은 잘 쓰지는 않는 부분이긴 하지만, c언어에서 time과 관련된 함수를 쓸 때는 signed와 unsigned 수식자가 정확하게 분류가 되어있어야만 사용이 가능합니다.

이렇게 특수한 경우들이 있기 때문에 수식자 자체의 영향력이 크다고 할 수는 없어도 우리가 꼭 알아야만 하는 부분인데요,

그럼 지금부터 함께 알아보도록 합시다.

 

1. Signed, Unsigned 수식자가 붙는 자료형

signed와 unsigned 수식자는 주로 정수형 앞에 사용을 하는 키워드입니다.

signed와 unsigned의 차이점은 숫자의 범위에서 나타납니다.

일단 signed는 양수와 음수 모두 담아낼 수 있는 수식자인데 반하여, unsigned는 오로지 양수만을 담아낼 수 있습니다.

그리고 번외로, c언어에서 0 역시 양수로 취급을 합니다.

그 이유는 0은 양수도 음수도 아닌 중립된 숫자이긴 하지만, 실질적으로는 양수에 좀 더 가까운 성질을 띄기 때문에 프로그래밍 언어에서는 대체적으로 양수의 범위에 끼워 넣는 경우가 비일비재합니다.

그래서 정수형 자료형이 4가지인데, unsigned가 붙어서 총 8개의 정수형 자료형이 표현이 될 수 있습니다.

그럼 그걸 한 번 표로 나타내어보겠습니다.

그럼 같이 보실까요?

자료형 비트 범위
정수형 short 부호가 있는 정수 16비트 -32768 ~ 32767
int 32비트 -2,147,483,648 ~ 2,147,483,647
long 32비트 -2,147,483,648 ~ 2,147,483,647
long long 64비트 -9,223,372,036,854,775,808
~
9,223,372,036,845,775,807
unsigned short 부호가 없는 정수 16비트 0 ~ 65,535
unsigned int 32비트 0 ~ 4,294,967,295
unsignd long 32비트 0 ~ 4,294,967,295
unsigned long long 64비트 0 ~ 18,446,744,073,709,551,615

이런 식으로 정의를 할 수 있습니다.

수의 범위는 비트 수에 따라서 매우 천차만별이에요.

그래서 비트 수가 늘어남에 따라서 우리가 표현할 수 있는 수의 범위도 점점 늘어납니다.

그러면 한 번 몇 가지 예시를 들어보도록 하겠습니다.

반응형

 

unsigned int speed; // 부호 없는 int형
unsigned distance; // unsigned int distance와 같은 의미임.
unsigned short players; // 부호 없는 short형
unsigned long seconds; // 부호 없는 long형

//결과 도출할 때 쓰는 문법

unsigned int speed = 100;
printf("%u\n", speed);

이런 식으로 사용을 할 수 있습니다.

그리고 unsigned 옆에 바로 변수명을 붙이게 되면 그 옆에 int가 생략이 되어있음을 의미합니다.

그래서 int형을 쓸 경우에는 그냥 unsigned만 써도 무방합니다.

다만, short형과 long형을 쓸 경우에는 무조건 short와 long을 붙여서 사용해야만 합니다.

그리고 unsigned 정수형을 받을 때에는 우리가 정수형을 받을 때 쓰는 형식 지정자인 %d를 사용해도 되기는 하지만,

이 경우에 출력하는 값이 작을 때에는 올바르게 출력을 하지만, 그 값이 클 경우에는 음수로 출력이 되어 잘못된 결괏값이 나옵니다.

그래서 unsigned 수식자를 붙일 때에는 무조건 %u라는 형식 지정자를 붙여서 출력을 해줍니다.

 

지금까지 signed와 unsigned 수식자에 대하여 알아보았습니다.

다음 포스팅에서는 오버플로우에 대하여 알아보는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글