-1

我有一个结构:

typedef struct {
  scalar_t x;   
  scalar_t y;
  scalar_t z;
 } vector_t;

typedef struct {
      scalar_t x;   
      scalar_t y;
      scalar_t z;
     } point_t;

在结构内部:

typedef struct {
    char *name;
    int lives;
    point_t pos; /* current position */
    vector_t vel; /* current velocity */
    .
    .
    .
    int score; /* players' score */
    .
    .
    .
    } player_data_t;

在函数内部,我有计算玩家位置的逻辑。但是,现在当我想查看 x、y 和 z 的值时。当我尝试printf("%d", plyr->pos.x)或任何其他值时,我得到的只是 7。所以,我一定是把它弄错了,因为玩家在移动。他不是一直在 pos (7,7,7) 上。

4

2 回答 2

1

正如您在评论中提到的,scalar_t实际上是 a double,因此 printf("%d")解释错误。一个好主意是捆绑 scalar_t一个函数来打印出它的值,或者至少是一个包含正确printf格式说明符的常量。这样typedef就不会失去 ing 的灵活性。例如:

#define SCALAR_SPECIFIER "%d"
typedef double scalar_t;
...
scalar_t foo;
printf("Value of foo: " SCALAR_SPECIFIER, foo);

或者

typedef double scalar_t;
void print_scalar_t(scalar_t value);
于 2013-03-20T11:35:03.927 回答
0

只是一个例子

player_data_t foo;

foo.pos.x = 10.;

printf ("%lf\n", foo.pos.x);
于 2013-03-20T10:15:02.853 回答