database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
ㆍ자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
자유게시판 자유게시판 5413 게시물 읽기
 
No. 5413
입니다...
작성자
윤석원(kharno)
작성일
2006-10-30 20:38ⓒ
2010-12-08 13:49ⓜ
조회수
9,852


#include
void main()
{
          int a , b;
          a = 1;
          b = a++;
          printf("%d", b);
}
이것의 출력 결과는?
........이거 계속 학교 다녀야 할지 의문감이 팍팍든다는 orz
계속 다녀야 할까요??

이 글에 대한 댓글이 총 17건 있습니다.

오옹 뉴페이스의 등장!!


음.. 위 문제의 정답은 멀까..


a에 1을 넣구 b 에 a에 1을 더하니까.. 정답은 머지.. 2인가??


학교 계속 다니삼~

이상호(search5)님이 2006-10-30 20:58에 작성한 댓글입니다.

낄낄낄...

SoQooL(김홍선)님이 2006-10-30 21:09에 작성한 댓글입니다.

앗.. 이거 답이 1일까 2일까;;;
1일것 같기도 하고 2일것 같기도 하고 오히려 이런게 더 아리송해버려..... 
게다가.. 이게!! C++ 문제라고!!
C라고 해줘야지 이런건;; C++ 이면 객체 개념을 가르쳐야 -.-

신기배(소타)님이 2006-10-30 21:14에 작성한 댓글입니다.
이 댓글은 2006-10-30 21:15에 마지막으로 수정되었습니다.

#include
void main()
{
          int a , b;
          a = 1;
          b = a++;
          printf("%d", b);
}

어떻게 위와 같은게 C++ 문제죠,
그렇다면 제가 한번 간단한 C++ 문제를 내볼까요.

#include <iostream>
using namespace std;
int main()
{
    int i=0;
    cout<<++i<<++i<<++i<<++i<<endl;
    return 1;
}

위의 출력 결과는 무엇일까요,
리눅스와 윈도우의 결과가 같은가요. 그리고 그 이유는 ?

초보대왕님이 2006-10-30 21:25에 작성한 댓글입니다.
이 댓글은 2006-10-31 11:49에 마지막으로 수정되었습니다. Edit

오른쪽부터 처리한다, 스택

답은 아니고 힌트 ㅋㅋ;

신기배(소타)님이 2006-10-30 22:24에 작성한 댓글입니다.

++i 와 i++ 의 차이를 알아보기위한 ANSI-C문제인듯 :(


그리고 초보대왕님 include뒤에 <iostream>때문에 날라갔군요 ㅋㅋㅋ


설마 틀릴까? 라고 직접 해본 사람은 저 뿐이군요 ㅡㅡ;;;


왜 같을까? ㅋㅋㅋ  << 와 ++ 의 우선순위? :)

이창민(Prosper)님이 2006-10-31 10:31에 작성한 댓글입니다.
이 댓글은 2006-10-31 10:50에 마지막으로 수정되었습니다.

기배랑 창민형 구라쟁이 ㅎㅎ;


직접 테스트 해 보세요.


저도 몰랐던 놀라운 결과가 출력됩니다.


윈도에서는 안 해 봤고, 리눅스였습니다.

허정수(wertyu)님이 2006-10-31 10:35에 작성한 댓글입니다.

점점 미궁으로 빠지는가 ㅋㅋㅋ

귀찮아서 안해봄 ㅋㅋㅋ

신기배(소타)님이 2006-10-31 10:44에 작성한 댓글입니다.

구라쟁이라니 버럭 ㅋㅋㅋ



윈도우와 리눅스 모드 동일한 값 4321 발생함 :)


G++ 에서 를 사용하여 cout 함수를 사용할경우 동일함

VC++ 에서 를 사용하여 cout 함수를 사용할경우 동일함

using namespace std;           // 표준 라이브러리 namespace 지정

컴파일러 버전에 따라서 틀려집니다.


//using namespace std; 주석처리시


[adminj@www ~]$ g++ test.cpp -o test

test.cpp: In function `int main()':

test.cpp:6: error: `cout' was not declared in this scope

test.cpp:6: error: `endl' was not declared in this scope

gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)


[minias@web minias]$ g++ test.cpp -o test

gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)


cout referenceURL

http://msdn2.microsoft.com/en-us/library/bzbx67e8.aspx

C:\Program Files\Microsoft Visual Studio\VC98\Include\ostream.h

extern ostream_withassign _CRTIMP cout;

inline _CRTIMP ostream& __cdecl flush(ostream& _outs) { return _outs.flush(); }


/usr/include/g++-3/iostream.h

extern _IO_ostream_withassign cout, cerr;

extern ostream& lock(ostream& outs);

extern ostream& unlock(ostream& outs);



이창민(Prosper)님이 2006-10-31 10:53에 작성한 댓글입니다.
이 댓글은 2006-10-31 11:36에 마지막으로 수정되었습니다.



저는 4444가 출력되는데요;;


[ufamorg@test tmp]$ cat a.cc

#include

using namespace std;

int main()

{

    int i=0;

    cout<<++i<<++i<<++i<<++i<     return 1;

}


[ufamorg@test tmp]$ g++ a.cc



[ufamorg@test tmp]$ ./a.out

4444



[ufamorg@test tmp]$ g++ -v

Using built-in specs.

Target: i386-redhat-linux

Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --host=i386-redhat-linux

Thread model: posix

gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)

[ufamorg@test tmp]$

허정수(wertyu)님이 2006-10-31 11:10에 작성한 댓글입니다.
이 댓글은 2006-10-31 11:12에 마지막으로 수정되었습니다.

음.. 이상하네 ㅋㅋ

C++은 몰르고;

C에서 printf에다 하면 오른쪽부터 처리해서 4321 머 그런식이 맞는데 ㅋㅋㅋ

신기배(소타)님이 2006-10-31 11:28에 작성한 댓글입니다.

// (이창민님) ++i 와 i++ 의 차이를 알아보기위한 ANSI-C문제인듯 :

단순히 그런 문제가 아닙니다. 따라서 좀 생각할 꺼리가 됬으면 좋겠읍니다.
수정하는 과정에서 <iostream> 이 빠졌네요.
편집기가 특수문자 '<', '>' 을 잘 처리못하는 듯 합니다.

초보대왕님이 2006-10-31 11:59에 작성한 댓글입니다.
이 댓글은 2006-10-31 12:25에 마지막으로 수정되었습니다. Edit

스택에 대한거 아녜요?

신기배(소타)님이 2006-10-31 12:21에 작성한 댓글입니다.

초보대왕님이 무슨 이야길 하시는건지는 대략 감이 옵니다.


ANSI-C / ISO-C / C표준과 C++ 확장에 관련된 OS별 차이점이라던지 :)

C95 / C99 에 대한 자료도 많이 봤긴했었는데;;;


위의 언급한 내용은 본문의 C 구문에 대한 이야기입니다.

초보대왕님의 코드는 ANSI-C가 아니기에 :)


참고될만한 문서를 링크합니다.


http://anubis.dkuug.dk/JTC1/SC22/WG14/www/docs/n869/n869.pdf.gz


x+++++y 이런 구문이 될까요?

x++ + ++y 이런 구문이 될까요?


또한


i = ++i + 1;

a[i++] = i;


i = i + 1;

a[i] = i;

는 어떻게 틀릴까요 :)



The result of the postfix ++ operator is the value of the operand. After the result is

obtained, the value of the operand is incremented. (That is, the value 1 of the appropriate

type is added to it.) See the discussions of additive operators and compound assignment

for information on constraints, types, and conversions and the effects of operations on

pointers. The side effect of updating the stored value of the operand shall occur between

the previous and the next sequence point.

이창민(Prosper)님이 2006-10-31 12:53에 작성한 댓글입니다.
이 댓글은 2006-10-31 13:31에 마지막으로 수정되었습니다.

ㅁ_ㅁ;;
너무 쉽게 문제 내놔서 그렇다고 한탄해놓았는데
다른 문제로 논의를 하시다니 ㅡㅡ;;
그건 그렇고 저도 스택인줄 알았는데.......;;;;;

윤석원(kharno)님이 2006-10-31 17:31에 작성한 댓글입니다.

저 문제는 함수가 호출될 때 코드 영역 머 그런거랑 스택의 순서; 그런거에 관련된 거 맞삼 ㅋㅋ
물론 그 윗라인에는 창민형이 위에 말한 연산자의 우선순위 얘기도 있고효
코드 영역, 스택 얘기 나오면 시퓨 레지스터, 어셈 얘기까지 나와게 되서 대략 난감;

신기배(소타)님이 2006-11-01 01:18에 작성한 댓글입니다.

-- (이창민님)
-- 초보대왕님이 무슨 이야길 하시는건지는 대략 감이 옵니다.
-- ANSI-C / ISO-C / C표준과 C++ 확장에 관련된 OS별 차이점이라던지 :)
-- C95 / C99 에 대한 자료도 많이 봤긴했었는데;;;

이런 눈치 채셧네요 거기에 더하여
C++ 에서의 컴파일러의 최적화 문제도
밑바탕에 깔려 있는 예제였읍니다.
어쩌면 이것이 가장 중요한 사항인 것 같습니다.

초보대왕님이 2006-11-01 09:20에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5417중고도서 구입원합니다.
용쟁호투
2006-11-02
8311
541611월 오프 모임 참가 신청 받습니다. [29]
허정수
2006-11-02
11117
5415방구끼는법 [5]
오라클초보
2006-11-01
9429
5413입니다... [17]
윤석원
2006-10-30
9852
5411[운영자님 요청] 프린트 기능 추가해주세요 [13]
박기원
2006-10-19
7998
5409MySQL Front 가.. [4]
team b
2006-10-27
8863
5407사진 업로드를 허용하였습니다. [3]
이상호
2006-10-25
7675
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다