Page 23 -
P. 23
double d;
...
float f2 = {d}; // 축소 오류
두 타입 사이에 값을 축소하는 현상은 피차 마찬가지라는 점을 유의하라.
unsigned u3 = {3};
int i2 = {2};
unsigned u4 = {i2}; // 축소 오류: 음수를 가질 수 없다.
int i3 = {u3}; // 축소 오류: 큰 값을 모두 나타낼 수 없다.
signed int와 unsigned int 타입의 크기는 같지만, 각 타입의 모든 값은 다르게 표시한다.
1.2.4 범위
범위는 변수와 상수의 수명과 가시성을 결정하고 프로그램 구조를 확립하는 데 기여한다.
1.2.4.1 전역 정의
프로그램에서 사용하려는 모든 변수는 사용하기 전에 타입 지정자와 함께 선언해야 한다. 하나의
변수는 전역 범위나 지역 범위에 위치할 수 있다. 전역 변수는 모든 함수의 바깥에 선언한다. 전역
변수를 선언하고 나면 코드 어디에서나, 심지어 함수 안에서도 참조할 수 있다. 변수를 쉽게 사용
할 수 있으므로 처음에는 매우 편한 것처럼 보이지만, 소프트웨어의 규모가 커짐에 따라 전역 변
수들의 수정 사항을 추적하기가 더 어려워지고 고통스러워진다. 어느 시점이 되면 코드를 변경할
때마다 오류 사태를 촉발하게 되는 잠재력을 지니게 된다.
Caution 전역 변수를 사용하지 마라.
만약 전역 변수를 사용한다면 조만간 후회하게 될 것이다. 우리를 믿어라. 다음과 같은 전역 상수
는 사이드 이펙트(Side Effect)가 발생하지 않기 때문에 괜찮다.
const double pi = 3.14159265358979323846264338327950288419716939;
034
모던c++_09.indd 34 2017-12-11 오전 11:02:55