5.1.1 값
C에서 값(value)은 프로그램의 구체적인 구현 방식이나 프로그램 실행 중에 표현되는 방식과는 독립적인 추상적인 개체다. 예를 들어 0이란 값은 모든 C 플랫폼에서 똑같은 효과를 내야 한다. 즉, 0을 x라는 값과 더하면 그 결과는 여전히 x여야 하고, 제어문에 나온 표현식의 결과가 0이면 항상 false에 해당하는 제어문으로 분기해야 한다.
지금까지 소개한 예제에 나온 값은 대부분 숫자였는데, 이는 우연이 아니라 C의 핵심 속성이기 때문이다.
TAKEAWAY 5.2 값은 모두 숫자거나 숫자로 변환된다.
이 속성은 C 프로그램에서 다루는 모든 값에 적용된다. 즉, 화면에 출력하는 문자나 텍스트뿐만 아니라 진리값, 측정값, 관계식 등에도 똑같이 적용된다. 숫자는 작성한 프로그램 코드나 구현 방식과는 별개로 수학적인 개체로 취급해야 한다.
프로그램 실행에서 데이터(data)란 어떤 시점의 모든 오브젝트가 갖는 값 전체를 의미한다. 프로그램 실행 상태(state)는 다음 요소로 구성된다.
• 실행 파일
• 현재 실행 지점
• 데이터
• 외부 개입(사용자 IO 등)
마지막 네 번째 요소를 제외할 때, 프로그램을 동일한 실행 지점에서 동일한 데이터에 대해 실행하면 항상 똑같은 결과를 내야 한다. 그런데 C 프로그램을 다양한 시스템에 포팅(이식)할 수 있어야 하므로 이것만으로는 부족하다. 계산 결과가 (플랫폼에 종속적인) 실행 파일이 아니라 프로그램 규격(specification)에만 종속돼야 바람직한데, 이렇게 플랫폼 독립성을 실현하기 위해서는 타입(type)C의 역할이 중요하다.