C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5508] Re:--,++연산자에 대한 질문이요.
박지훈.임프 [cbuilder] 2489 읽음    2001-02-16 09:53
전승호 님이 쓰신 글 :
: #include <iostream.h>
: void main()
: {
:     int i;
:     i=1;
:     cout << i << '\t' << i++ << '\t' << i++ << '\n';
:     i=1;
:     cout << i << '\t' << ++i << '\t' << ++i << '\n';
:     i=10;
:     cout << i << '\t' << i-- << '\t' << i-- << '\n';
:     i=10;   
:     cout << i << '\t' << --i << '\t' << --i << '\n';
:     cout << (i*=2) << '\n';
:     cout << (i*=2) << "\n";
: }
: 를 실행했을때 저의 생각엔 당연히
: 1    1    2
: 1    2    3
: 10    10    9
: 10    9    8
: 16
: 32
: 가 될것 같은데 이상하게 컴퓨터는
: 3    2    1   
: 3    3    2
: 8    9    10
: 8    8    9
: 16
: 32로 찍히더군요. 저의 생각엔 변수의 제어가
: cout << i << '\t' << i++ << '\t' << i++ << '\n'; /*  <---에서
: 왼쪽에서 오른쪽으로 즉 i  --> i++ --> i++  로 될것
: 같은데 이상하게 컴퓨터는 그 반대로 실행을 한것 같습니다.
: 만약에 컴퓨터대로 또 반대로 한다고 하여도 그러면 가장
: 먼저 '\t'가 실행되야 할텐데 그것도 아니고......
: 정말 궁금합니다.
: 꼭좀 가르쳐 주세요.
:


임펠리테리입니다.

C++에서 << 연산자는 우->좌로 연산하는 연산자입니다. 다시 말해, 피연산자 두개중 오른쪽 것을 먼저 값을 알아낸 후 왼쪽으로 진행하는 것입니다. 이런 연산 순서가 대부분의 경우에는 문제가 없지만, ++, -- 연산자를 사용한 피연산자를 사용했을 경우에는 결과가 예상했던 것과는 달라지므로 주의해야 합니다. 또한, C++ 표준에서는 함수의 인자를 넘길 때도 가장 오른쪽 인자부터 먼저 계산해서 넘깁니다. 이 경우 함수를 선언할 때 pascal이나 __fastcall 지시자를 사용하면 좌->우로 넘기게 됩니다.

그럼 참고하시길...

+ -

관련 글 리스트
5502 --,++연산자에 대한 질문이요. 전승호 2454 2001/02/16
5508     Re:--,++연산자에 대한 질문이요. 박지훈.임프 2489 2001/02/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.