好的,我在這裏寫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