자, 여기 c로 쓰고 있습니다. mingw gcc로 컴파일하기.구조체에 어떤 문제가 있습니까?
정말 간단하게하려고합니다. 3 개의 float x, y, z가 포함 된 벡터 구조체를 만듭니다.
그러면 나는 그들과 수학을 할 수 있기를 바란다.
이 내 짧은 테스트 프로그램입니다 :
#ifndef _PHYSICS_C_
#define _PHYSICS_C_
#define SUCCESS 0
#define FAILURE 1
typedef struct {
float x;
float y;
float z;
}vector;
int add (vector* a, vector* b, vector* destination){
(*destination).x = (float)(((*a).x) + ((*b).x));
(*destination).y = (float)(((*a).y) + ((*b).y));
(*destination).z = (float)(((*a).z) + ((*b).z));
return SUCCESS;
}
int main(int argc, char** argv){
printf("creating vectors\n\n");
vector a = {1.0f,5.0f,3.0f};
vector b = {2.0f,3.0f,6.0f};
vector destination;
printf("adding vectors\n\n");
if(add(&a, &b, &destination) == SUCCESS){
printf("result: (%d, %d, %d)\n\n",destination.x,destination.y,destination.z);
} else {
printf("the program failed somehow...\n\n");
}
printf("Press any key to continue...\n");
getchar();
return SUCCESS;
}
#endif
내가 컴파일하고 실행
, 그것은 반환해야합니다 (3, 8, 9) 벡터 a와 b의 합.대신은 (0, 1074266112, 0) ...
내가 잘못이 무엇인지 알아낼 수 없습니다 반환합니다.
나는 필자가 생각하지 못한 기억을 어떻게 든 써야한다고 생각합니다.
'* (x) .y' 대신'->'연산자를 사용할 수 있습니다. 엄청난 괄호를 제거하면 코드를 더 쉽게 읽을 수 있습니다. – Necrolis