f( int a, int b )
{
...
}
int a = 5;
f( ++a, a++ );
이때 f에서 a와 b의 값은?
C언어 기준.
6 5아님? - dc App
하수로 판명났습니다.
답이 뭐임? - dc App
직접 돌려봐
아 6 6 임? - dc App
컴파일러마다 매개변수를 앞부터 넣는지 뒤부터 넣는지가 다르다고 들었음. 대부분 뒤인거같던데, 그에 따르면 7 5가 맞을듯 - dc App
생각해보니 후위연산자 전위연산자 차이도 있군 - dc App
그럼 a++에서 b에 5 전해주고 1늘리고 ++a...음? 돌려봐야겠네 - dc App
7, 5 맞는데
정답 여하 상관없이 내가 하수가 맞긴하지 - dc App
http://m.dcinside.com/board/programming/1116347- dc App
비슷한 글은 이미 있었구먼 - dc App
근데 링크 내용 뒤부터 처리한다고 쳐도 2 0 2 안되지 않냐 - dc App
링크에서, c부터 --x하면 x == 0상태(매개변수로는 x를 넘겨주니 아직 값 평가 안할거임), 그다음 b는 x를 매개변수로 넘겨준 후 ++, 그러니까 b의 인자로 0 넘겨준 후 1이됨 - dc App
그후 ++x하니까 x는 1 또 증가해서 2가됨. 이제 매개변수에 넣을 값은 x, 0, x. x는 2임 - dc App
b는 후위연산자로 값을 복사해서 넘겨주니 그 당시의 값이고, a c는 전위연산자라 그 자체를 넘겨주기때문 - dc App
2, 0, 0 아님? x가 1인 상태에서 맨 뒤에 있는 --x부터 넣는건데 어떻게 맨 뒤가 2가 됨 - dc App
--x에서는 x의 값을 1 내리라는 뜻이 됨. 근데 c가 넘겨주는건 x(해당 시점 1)에서 --연산자를 적용한(0) 값을 넘겨주는게 아니라 x를 넘겨주는거임 - dc App
전위, 후위연산자의 차이점이 있음ㅇㅇ 후위연산자는 x를 증감시키기 전의 값을 넘겨줘야해서 값 복사가 일어나. 복사한 값 x'를 넘겨주고 x의 값을 변경하는데, 그런 이유에서 b는 a의 연산에 영향을 받지 않는 0값을 넘겨줘. - dc App
하지만 c는 전위연산자로 x값이 그 뒤에 오는 연산에 따라 바뀌어. 해당 줄에서 값을 바꾸는 작업이 끝난 후 서브루틴에서 해당 값을 받아간다고 생각하면 될듯. - dc App
그랄군 - dc App
정답) 이렇게 짠 새끼를 줘팬다
이게 고수다 - dc App
(a,b) = (6,5)
6 5아님? - dc App
하수로 판명났습니다.
답이 뭐임? - dc App
직접 돌려봐
아 6 6 임? - dc App
컴파일러마다 매개변수를 앞부터 넣는지 뒤부터 넣는지가 다르다고 들었음. 대부분 뒤인거같던데, 그에 따르면 7 5가 맞을듯 - dc App
하수로 판명났습니다.
생각해보니 후위연산자 전위연산자 차이도 있군 - dc App
그럼 a++에서 b에 5 전해주고 1늘리고 ++a...음? 돌려봐야겠네 - dc App
7, 5 맞는데
정답 여하 상관없이 내가 하수가 맞긴하지 - dc App
http://m.dcinside.com/board/programming/1116347
- dc App
비슷한 글은 이미 있었구먼 - dc App
근데 링크 내용 뒤부터 처리한다고 쳐도 2 0 2 안되지 않냐 - dc App
링크에서, c부터 --x하면 x == 0상태(매개변수로는 x를 넘겨주니 아직 값 평가 안할거임), 그다음 b는 x를 매개변수로 넘겨준 후 ++, 그러니까 b의 인자로 0 넘겨준 후 1이됨 - dc App
그후 ++x하니까 x는 1 또 증가해서 2가됨. 이제 매개변수에 넣을 값은 x, 0, x. x는 2임 - dc App
b는 후위연산자로 값을 복사해서 넘겨주니 그 당시의 값이고, a c는 전위연산자라 그 자체를 넘겨주기때문 - dc App
2, 0, 0 아님? x가 1인 상태에서 맨 뒤에 있는 --x부터 넣는건데 어떻게 맨 뒤가 2가 됨 - dc App
--x에서는 x의 값을 1 내리라는 뜻이 됨. 근데 c가 넘겨주는건 x(해당 시점 1)에서 --연산자를 적용한(0) 값을 넘겨주는게 아니라 x를 넘겨주는거임 - dc App
전위, 후위연산자의 차이점이 있음ㅇㅇ 후위연산자는 x를 증감시키기 전의 값을 넘겨줘야해서 값 복사가 일어나. 복사한 값 x'를 넘겨주고 x의 값을 변경하는데, 그런 이유에서 b는 a의 연산에 영향을 받지 않는 0값을 넘겨줘. - dc App
하지만 c는 전위연산자로 x값이 그 뒤에 오는 연산에 따라 바뀌어. 해당 줄에서 값을 바꾸는 작업이 끝난 후 서브루틴에서 해당 값을 받아간다고 생각하면 될듯. - dc App
그랄군 - dc App
정답) 이렇게 짠 새끼를 줘팬다
이게 고수다 - dc App
(a,b) = (6,5)