2015-01-12 5 views
1

dgi.get_int32()/100.0의 결과 인 3 개의 인수를 사용하여 LPoint3f을 빌드해야합니다. C++이 코드를 변환 할 때 이 코드는 정의되지 않은 함수 호출 순서에 의존합니까?

LPoint3f(dgi.get_int32()/100.0, dgi.get_int32()/100.0, dgi.get_int32()/100.0); 
# values are correct 

가 내가 쓴 :

LPoint3f pos(dgi.get_int32()/100.0, dgi.get_int32()/100.0, dgi.get_int32()/100.0); 
// incorrect values sometimes, correct others 

그러나,이 작품 :

x = dgi.get_int32()/100.0; 
y = dgi.get_int32()/100.0; 
z = dgi.get_int32()/100.0; 
LPoint3f pos(x, y, z); 

코드 번호 정의 1 파이썬에서 나는 호출 순서에 의존 할 수 행동?

+0

본인의 문제인지 의심 스럽습니다. 'get_int32()'는 무엇을합니까? – templatetypedef

+0

정수를 반환합니다. –

+1

@NacibNeme 부작용이 있습니까? –

답변

3

C++의 함수 호출 순서는 지정되지 않았습니다. get_int32() 호출에 부작용이있는 경우, 즉 내부 값을 수정하면 Python에서와 같은 결과를 얻지 못합니다. 코드는 정의되지 않았지만 신뢰할 수있는 값을 생성하지 않습니다.

+0

신뢰할 수있는 비 목표 값을 생성합니다. –