| Myers |
-- 연산자는 변수명 뒤에 오면, 선 연산 후 감소; 변수명 앞에 오면, 선 감소 후 연산이 됩니다. 고로,
int val1=10;
int val2=(val1--)+2;
val1이 10으로 선언된 후, val2 에서는 (val1을 선 연산 후 감소)+2 가 되어있습니다. 그러므로 대입연산자인 ' = ' 의 기능을 val2를 초기화 시키는데 먼저 연산이 될 것 이고, 그 후에 val1의 값이 1 줄어들어 9로 초기화 될 것입니다. ( val2를 초기화하는 과정이 끝나고 val1의 값은 1 감소합니다. )
그래서, printf 함수를 이용하여 val1을 출력하면 9, val2는 val1이 감소 되기 전에 = 연산자에 의하여 val1의 원래 값인 10과 2를 더한 값으로 초기화 되었기에 12 가 나옵니다. |
2011/01/07 |
|