|
이것은 이식성이 없는 코드입니다.
-- 2 에서 ++ 를 4번 하면 6이 되죠.
2 를 4 번 ++ 하면 6 이 되는 것은 맞는데
4 개의 ++a 값이 모두 6 이 되는 것을 보장하지는 않습니다.
순서대로 3,4,5,6 이 될 수도 있고 6,5,4,3 이 될 수도 있읍니다.
즉 6,6,6,6 이 아닐 수도 있다는 것이지요.
심지어는 C 와 C++ 의 사양의 차이로 인해 C 와 C++ 에서의 결과값이 다를 수 있죠.
컴파일러를 바꾸거나 리눅스에서 테스트해보면 금방 알 수 있읍니다.
시험삼아 아래 코드도 컴파일러를 바꾸어나 리눅스에서 실행시켜보세요.
a=2;
cout<<++a<<++a<<++a<<++a<<endl;
그러면 좀 확실해질 겁니다.
이정구 님이 쓰신 글 :
: C 에서는 ++ 연산자가 + 연산자보다 우선순위가 높습니다.
:
: 따라서 ++ 를 4번 하고 그 다음에 + 를 4번하게 됩니다.
:
: 2 에서 ++ 를 4번 하면 6이 되죠. 그리고 그 6을 4번 + 하면 24 가 됩니다.
:
: 광합성 님이 쓰신 글 :
: : a = 2;
: : b = ++a + ++a + ++a + ++a;
: :
: : b가 볼랜드에서는 왜 24가 되나요??
: : 그리고 다른 비쥬얼이나 차이점은 무엇인가요?
|