본문 바로가기

고급C,C++

signed char형과 unsigned char형

int형과는 달리, char형은 signed형이나 unsigned형으로 미리 정해져 있지 않다. 그것은 C++ 시스템 개발자가 하드웨어 특성에 맞추어 알맞은 char형을 정할 수 있도록 하기 위한 배려이다. 그러나 char형이 어느 특별한 한 가지 행동만을 보여야 한다면, signed char형 또는 unsigned char형을 사용하여 그 행동을 명시적으로 제한할 수 있다.

char fodo; //signed형 또는 unsigned형
unsigned char bar; //명백히 unsigned형
signed char snark; //명백히 signed형

이러한 구별은  char형으로 수를 나타내고 할 때 특히 중요하다. unsigned char형은 0에서 255까지의 범위를 나타낼 수 있고, signed char형은 -128부터 127까지의 범위를 나타낼 수 있다. 예를 들어, 200정도 되는 값을 char형 변수에 저장한다고 가정해 보자. 이것은 어떤 시스템에서는 동작하지만 다른 어떤 시스템에서는 동작하지 않을 것이다. 같은 값을 unsigned char형에 저장한다면 어느 시스템에서나 무리없이 동작할 것이다. 그러나 표준 ASCII 문자를 char형 변수에 저장할 때에는 signed형이나 unsigned형이나 상관이 없으므로 간단히 char라고 쓰면 된다.