또는 다음과 같이 처리할 수도 있다. x 값을 할당하는 문장이 있는 곳이 printf 앞인지 뒤인지는 나중에 x를 사용하는 데 아무 상관이 없기 때문이다.
printf("x is 4.5\n"); double x = 4.5;
오류 없이 최적화할 때 중요한 단 한 가지 사항은, C 컴파일러가 관측 가능한 상태(observable state)C 를 재현하는 실행 파일을 만들어내는지 여부다. 관측 가능한 상태는 몇 가지 변수(또는 뒤에서 소개할 이와 비슷한 개체)의 내용과, 프로그램 실행 중에 출력되는 내용으로 구성된다. 그리고 이런 상태가 변경되는 전반적인 메커니즘을 추상 상태 기계(abstract state machine)C라고 부른다.
추상 상태 기계에 대해 알아보기 위해서는 현재 상태를 표현하는 값(value), 그 상태가 표현하는 대상인 타입(type), 상태를 구분하는 방식인 표현(representation)이란 개념부터 살펴볼 필요가 있다. 추상(abstract)이란 단어가 의미하는 것처럼, C 언어는 프로그램이 표현하는 추상 상태 기계를 다양한 플랫폼에서 각자의 능력과 필요에 맞게 구현할 수 있는 메커니즘을 제공한다. 이러한 포용성은 C 언어의 최적화 역량에 중요한 요인 중 하나다.