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