[쉬어가는페이지] (초~)중급 C++ 관련 문제

안녕하세요.. ^^

갑자기 코딩하다가 그럴듯한 재밌는 문제가 생각나서요,,

ㅎㅎ 중,고수님들은 당연히 알 수 있는 문제이지만..

초급이나 중급개발자 입장에서는 재밌는 문제 일 수 있어서 (*글수정 이유 ->어느정도 난이도가 있다네요,,)

올려봅니다~~


int i = 0;

i = ++i + ++i

최종 i값은 어떤 값이 나올까~~~요~~~

^^


추신 : 이유까지 적어주시면~ 오나전 굿입니다~~!!
       돌려보지 마세요~ 재미 없습니다~~~ ^^
이전 댓글 32
우수한 2008-12-16 20:46
헉.. 직접 돌려보시면~ 재미없습니다...
찬 2008-12-16 20:47
3? 2?
재르™ 2008-12-16 20:47
3인가욤?ㅎ return i; 가 빠졌으므로 무효ㅎ
우수한 2008-12-16 20:49
재르님// ㅋㅋㅋ 답은 어느정도 됐을때 공개할께여,, 무효처리 하지 마셈
rappie 2008-12-16 21:47
3일것 같은데...;
라토(lateau) 2008-12-16 21:51
연산자의 우선권만 생각하면 쉽게 풀릴 문제인듯 합니다^^ 아, 사용하시는 컴파일러는 어느 것인가요? 전 솔라리스cc와 gcc 사용 중입니다만... 결과가 다르게 나올리는 없겠죠? ㅎㅎ
우수한 2008-12-16 21:53
라토(lateau)님... 뭐,, C++ 언어에만 충실하다면,, 결과가 같을 것 같습니다만,, 보통 많이들 사용하시는,, MS에서 만든 Visual Studio 기준이면 기준이랄까요,, ^^;
라토(lateau) 2008-12-16 21:59
아무리 생각해봐도 결과가 다르게 나올 것 같지는 않네요^^ ㅎㅎ
지향 2008-12-16 22:23
int i = 0; i = i++ + i++; i = ? ㅋㅋ
라토(lateau) 2008-12-16 22:24
다음 번엔 ****p 이런 걸루다 부탁드립니다. =====3333
퓨리넬 2008-12-16 23:23
3일것 같은데요. 으음...헷갈리네요;;;
매쉬맬로 2008-12-16 23:49
++ 이 두번 먼저 되면 4 아닐까하는.. 아님 말죠 머 =3=3=3
라토(lateau) 2008-12-17 00:08
i가 연산 후엔 '리터럴'이 됩니다. ㅎㅎ 힌트는 여기까지^^
身Com合一 2008-12-17 00:23
4가 될거 같은데요... ++i가 두번 계산되고 나서 더해지니....
매쉬맬로 2008-12-17 00:23
정답을 안 올려주셔서.. 궁금한 나머지 VS 깔았네요;;
우수한 2008-12-17 00:40
헉.. 매쉬맬로님// ㅜ.ㅜ 죄송합니다.. 아침에 정답 올릴려고 했는데...
매쉬맬로 2008-12-17 00:42
아 아닙니다... 원래 진작에 깔았어야되는데.. 집 컴터가 요새 게임기가 되놔서 늦게 깔았을 뿐 입니다;; 지금 리터럴이 몬지 곰곰히 생각중입니다. ㅎㅎ
우수한 2008-12-17 00:47
라토님// **** 4중포인터인가요? ㅋㅋ 포인터 문제도 재밌는게 많은데,, 담번에 심혈을 기울여서,, 올려보겠습뉘다~!
히나가조아요 2008-12-17 01:02
아 심오한데요.. 저는 3으로 예상했었는데.. 답은 4가 되는군요.. 다시 잘 생각해보니 답이 4인것이 이해가 됩니다..
Topdawg 2008-12-17 02:14
한참후에 4가 되는걸 알았네요... 프로그래머로써 부끄럽군용..ㅠㅠ 어흙 ㅠ
퓨리넬 2008-12-17 09:16
아이코 4였군요. 부끄러워라. ㅎㅎ 담에도 재미있는 문제 올려주세요~^^
라토(lateau) 2008-12-17 10:03
부끄러워하시지 않으셔도 됩니다. ㅎㅎㅎ 혹시나 싶어 LCC로 돌려보았습니다. 결과는 '3'이군요. ㅎㅎㅎ 컴파일러마다 규약이 다르니까요. :) 그게 C의 장점이자 맛이 아닐까요.
우수한 2008-12-17 10:18
라토님// 넵, 맞습니다. 컴파일러마다 규칙이 다르긴 합니다.. 하지만,, C++ 기본규칙에 의하면 4가 되는게 맞습니다. ^^;
매쉬맬로 2008-12-17 10:29
i = ++i + ++i -> 4 i = i++ + ++i -> 3 i = ++i + i++ -> 3 i = i++ + i++ -> 2 다 풀어봐도 연산자 우선순위와 변수의 개념 말고는 다른건 없어 보이는데 라토님이 말씀하신 리터럴이 무슨 힌트가 되는지 모르겠습니다.
reister 2008-12-17 11:06
사실 현업에서 저런 코드를 쓰면 혼나죠; ㅋㅋㅋㅋㅋ
우수한 2008-12-17 11:16
reister님// ^^ 그냥 심심풀이 문제로 피식~ 웃고 말았으면 해요~ ㅋㅋㅋㅋ 현업에서 쓰면 혼나죠,, 이유는? 괄호 )(를 안했기 때문과 변수명을 i로 했기 때문, 수식이 불분명하기 때문,, 여러가지가 있겠죠,, ㅎㅎㅎㅎ
까망 2008-12-17 11:46
ㅋㅋ이게뭔가염.. ㅠㅠ
manie 2008-12-17 12:28
프로그래밍 코드는 주석이 없어도 누구나 이해할 수 있게 쉽게... :-) 단, 펑션 역활에 대한 주석은 필요.
라토(lateau) 2008-12-17 13:28
매쉬맬로 > 만약 제가 좋아라 하는 LCC를 기본으로 하자면, 우선 맨 오른쪽의 ++i가 연산이 됩니다. 고로, i = ++i + 1; -> 현재 i값은 1 ++i란 연산이 리터럴 1로 취급받으므로 더 이상 연산이 되지 않습니다. 그 다음 ++i가 연산 되면 i = 2 + 1; 고로 i는 3... 워낙에 뒤죽박죽이 되어서 제가 다른 걸 기준으로 말하고 있다는 걸 '우수한'님의 답글로 알게 되었답니다. ㅎㅎ 제가 말한 것은 LCC를 기준으로 할 때 적용받는 이야기입니다. 전 VC를 몰라요 ===333333
매쉬맬로 2008-12-17 15:25
움 컴파일러에 따라서.. 그렇게 달라질수 있는거였군요.. 혹시나 해서 플래시 액션스크립트로 테스트해 보니 3 이 나오네요;; 우연히 괜찮은 정보를 알게 됐습니다. 저는 이런 코드를 만들지 않도록 주의해야겠네요;; 감사합니다 ~
라토(lateau) 2008-12-17 15:59
매쉬맬로님 > C계열이 좋은 게 그런 느슨한 자유로움이죠^^ 전 다른 언어로 밥먹고 살지만 역시 C/C++은 가장 큰 동경의 대상이자 가장 좋은 친구입니다. ㅎㅎ
랜파티 2008-12-18 09:55
옆동네에 퍼갈게용..
← 자유게시판 목록으로