"눈이 나쁘면 안경을 쓴댔으니 모자란 너에겐 모자를 씌워주마" – 김케장 / 동전주머니엔 동전이 들었지

20150309
전후위 연산자 동작방식

5, 6년 넘게 코드 친다고 쳤는데 이걸 지금 알았네요. 흑흑

int x = 2;
std::cout << x++ + x << std::endl;

두 번째 줄 찍혀 나올 걸 보면 cpp에서는 4이고 c#에서는 5가 나옵니다.

cpp는 생각한 대로 나와서 넘어갔는데 c#에서 5가 나와서 한동안 나는 뭘 잘못 공부했나 했네요 ;ㅁ;

c#에서는 전후위 연산자 동작에 대해 정확히 명시되어 있지만, cpp에서는 ‘정의되지 않은 동작’이어서 그렇다고 합니다.


참고

http://stackoverflow.com/questions/17165292/prefix-operator-difference-in-c-and-c-sharp
http://stackoverflow.com/questions/6457130/pre-post-increment-operator-behavior-in-c-c-java-c-sharp

댓글이 2개 우앙 | 타닥타닥

  1. 공부를 열심히 하고 계시는군요!!

    실은.. 저런 헷갈릴만한 코드를 안 쓰는게 정석이긴 하죠. :)

  2. 흑흑 공부를 열심히 하고 있는 건 아니고요.(게을러서 ;ㅁ;) 어디 게시물 보다가 본 건데요.
    책에 x++ * 2 + –y – 5 + x * ( y % 2 ) 이런 게 나왔는데 답이 맞는지 묻는 게시물이였는데
    문제 자체는 말씀하신데로 좀 의미 없는 문제인데 사람들 댓글이랑 스택오버플로 보다가
    모르던 걸 알아서 몇자 슥슥. 컴파일러쪽이나 표준 문서는 본 적이 한 번도 없어 저런지 처음 알았네요.

댓글 남기기

* 표시된 곳은 반드시 입력해주세요