Хорошо, я пишу здесь.Компилирование в 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) ...
Я не могу понять, что не так.
по какой-то причине я думаю, что я должен каким-то образом перезаписывать память, которой я не должен.