선언은 명령문이다. 변수가 static으로 선언되지 않으면 제어 thread가 선언을 통과할 때마다 초기화가 실행된다. 명령문이 사용될 수 있는 모든 곳에서 선언을 허용하는 이유는 프로그래머가 초기화되지 않은 변수로 인한 오류를 최소화하고 코드에서 더 나은 지역성을 허용할 수 있도록 하기 위한 것이다. 보유할 값이 있기 전에 변수를 도입해야 하는 이유는 거의 없다. void f(vector& v, int i, const char∗ p) { if (p==nullptr) return; if (ii;) { if (i