好的,我在这里写c。在mingw gcc编译。我的结构有什么问题?
我试图做一些事情真的很简单。创建一个包含3个浮点数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',同时删除superflous圆括号,这将使您的代码更具可读性。 – Necrolis