reinterpret_cast 형변환?
글쓴이: nayana / 작성시간: 금, 2005/02/25 - 11:06오전
1 #include <iostream> 2 3 using std::cout; 4 using std::endl; 5 6 void func( void* v ) 7 { 8 int i = reinterpret_cast< int >( v ); 9 cout << i << endl; 10 } 11 12 int main ( void ) 13 { 14 func( reinterpret_cast< void* >( 5 ) ); 15 16 typedef void (* PFV )(); 17 PFV pfunc = reinterpret_cast< PFV >( func ); 18 19 pfunc(); 20 21 return 0; 22 }
결과가
5
1
이 나옵니다. 5가 나온이유를 알겠는데...1은 어떻게 나오는거죠?
Forums:
우연히요. (농담 아닙니다.)이 코드는 정의되지 않은 행동을 유발하므
우연히요. (농담 아닙니다.)
이 코드는 정의되지 않은 행동을 유발하므로 어떠한 결과라도 나올 수 있습니다.
현재 FC3 에서 실행 하였습니다.버전은 gcc version 3.4
현재 FC3 에서 실행 하였습니다.
버전은 gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
입니다. 여기에서 는 1이라는 결과가 나오고
vc++ 6.0 에서는 -1이라는 결과가 나옵니다.
어떠핳ㄴ 결과라도 나올수 있다는 얘기는 컴파일러마다 틀리다는 얘기 인가요 ? 아니면 실행할때마다 틀리다는 얘기 인가요?
컴파일러, 플랫폼, 심지어는 그날 운수에 따라 달라진다고 봐도 무방합니다
컴파일러, 플랫폼, 심지어는 그날 운수에 따라 달라진다고 봐도 무방합니다.
말 그대로 "정의되지 않"습니다.
넵...감사합니다.
넵...감사합니다.
댓글 달기