제일먼저 ()로 쳐져있는 참조변수 선연산후증감이 실행될테고 그 다음이 int형 4byte 포인터연산 그 다음이 포인터연산된 엉뚱한 메모리 주소를 찍어주는 듯여
뻘글(175.112)2011-08-20 13:56
함수 내에서 인자가 evaluate되는 순서는 정해져 있지 않음. 따라서 저런 코드는 \"왜\" 저런 결과가 나오는지 궁금해 할 필요도 없어 (컴파일러마다 다 다르게 나오거든). 한마디로 저런 코드는 쓰면 안된다는 것임.
ㅉㅉㅉ(24.98)2011-08-20 13:58
왜 저 값이 나오는지 설명할수 있는 이유는 함수 인자가 오른쪽에서 왼쪽으로 차례대로 evaluate 된다고 보면 되겠네. (*p)++) 에서 a값이 5에서 6으로 바뀌고, *p++에서 증가된값 프린트 한뒤 포인터 증가 한뒤, *p 에서는 마지막으로 증가된 포인터의 참조값, 즉 쓰레기값 출력.
ㅉㅉㅉ(24.98)2011-08-20 14:00
맨날 = == != 이거만 보다가 * 보니까 생소하다 JAVA나 해야즤
막장갤신학생(huci12)2011-08-20 14:00
단 다시 말하지만 내가 말한 저 예상이 틀릴수도 있고, 함수 인자가 계산되는 순서는 컴파일러 설계자 마음임.
ㅉㅉㅉ(24.98)2011-08-20 14:01
ㅉㅉㅉ// 오 존나 잘설명해둔거 같은대?ㅋㅋ
ㅁㄴㅇ(123.199)2011-08-20 15:06
ㅉㅉㅉ님 말이 맞음 p++ 하고 ++p의 차이점을 공부해보세요. 글구 함수인자에 대한 처리순서는 컴파일러 마음이긴 하지만 대부분 오른쪽에서 왼쪽으로 가는거임
연산자 우선 순위 때문에 저러나 하나씩 분리 해보고 출력해봐염.
어휴 곧휴 달고 오빠라고 하다니 ..
후로게이네여
제일먼저 ()로 쳐져있는 참조변수 선연산후증감이 실행될테고 그 다음이 int형 4byte 포인터연산 그 다음이 포인터연산된 엉뚱한 메모리 주소를 찍어주는 듯여
함수 내에서 인자가 evaluate되는 순서는 정해져 있지 않음. 따라서 저런 코드는 \"왜\" 저런 결과가 나오는지 궁금해 할 필요도 없어 (컴파일러마다 다 다르게 나오거든). 한마디로 저런 코드는 쓰면 안된다는 것임.
왜 저 값이 나오는지 설명할수 있는 이유는 함수 인자가 오른쪽에서 왼쪽으로 차례대로 evaluate 된다고 보면 되겠네. (*p)++) 에서 a값이 5에서 6으로 바뀌고, *p++에서 증가된값 프린트 한뒤 포인터 증가 한뒤, *p 에서는 마지막으로 증가된 포인터의 참조값, 즉 쓰레기값 출력.
맨날 = == != 이거만 보다가 * 보니까 생소하다 JAVA나 해야즤
단 다시 말하지만 내가 말한 저 예상이 틀릴수도 있고, 함수 인자가 계산되는 순서는 컴파일러 설계자 마음임.
ㅉㅉㅉ// 오 존나 잘설명해둔거 같은대?ㅋㅋ
ㅉㅉㅉ님 말이 맞음 p++ 하고 ++p의 차이점을 공부해보세요. 글구 함수인자에 대한 처리순서는 컴파일러 마음이긴 하지만 대부분 오른쪽에서 왼쪽으로 가는거임