Page 18 -
P. 18
정수 타입을 unsigned로 선언하면 음수 값을 갖지는 않지만 양수 값을 표현할 수 있는 범위가 2 1
배로 넓어진다(0을 +0과 - 0으로 구분하지 않는다면 표현 범위가 1만큼 더 넓어진다). signed와
unsigned는 short, int 등의 명사를 위한 형용사로 간주될 수 있다. 이때 형용사만 선언되었을 C+ + 기초
경우 기본 명사는 int다.
char 타입은 문자와 좁은 범위의 숫자, 두 가지 방식으로 사용할 수 있다. char는 정말 특이한 아
키텍처를 제외하면 거의 항상 8비트의 길이를 갖는다. 따라서 우리는 -128~127(signed)이나
0~255(unsigned) 범위의 값을 나타낼 수 있고 정수에 사용할 수 있는 모든 수치 연산을 수행할
수 있다. signed와 unsigned 모두 선언하지 않을 때, 어떤 버전을 사용할 것인지는 컴파일러의 구
현에 따라 다르다. 또한, 8비트에 맞는 코드를 갖는 모든 문자를 나타낼 수도 있다. 심지어 혼합할
수도 있는데, 예를 들어 ‘a’ + 7은 ‘h’다. 이는 문자의 기본 코드에 따라 달라진다. 잠재적인 혼
란은 명백한 시간 낭비로 이어질 수 있으므로 문자와 숫자를 혼합하지 않을 것을 강력히 권한다.
그러나 작은 숫자를 char나 unsigned char에 저장하면 크기가 큰 컨테이너에 저장할 때 유용할
수 있다.
논리값은 bool 타입으로 표시하면 좋다. bool 타입의 변수는 true와 false로 저장할 수 있다.
줄어들지 않는 범위 속성은 부동소수점에도 동일하게 적용된다. float는 double보다 좁거나 같
고, double은 long double보다 좁거나 같다. 일반적인 크기는 float 32비트, double 64비트,
long double 80비트다.
다음 절에서 정수 타입과 부동소수점 타입에서 자주 사용하는 연산들을 보여줄 것이다. '과 " 모
두 문자와 문자열에 사용하는 파이썬과는 달리 C++는 둘을 구별한다. C++ 컴파일러는 ‘a’를
문자 “a”(char 타입)로 생각하고 “a”를 “a”를 포함하고 \0으로 끝나는 문자열(즉, char[2] 타입)로
생각한다. 만약 파이썬을 사용한 적이 있다면 이를 주의하길 바란다.
Caution 변수를 가능한 한 늦게 선언하라. 일반적으로 변수를 처음 사용하기 직전에 선언하는 것이 좋고,
가능하다면 초기화할 수 있는 상태 이전에는 선언하지 않는 것이 좋다.
이런 특성은 프로그램의 코드가 길어질 때 가독성을 높인다. 또한, 컴파일러가 중첩된 범위에서
메모리를 더 효율적으로 사용할 수 있게 해준다.
C++11은 변수의 타입을 추론할 수 있다. 예를 들어, C+ +11
auto i4 = i3 + 7;
029
모던c++_09.indd 29 2017-12-11 오전 11:02:54