如何在另一个struct中查看struct的值

时间:2013-03-20 10:05:35

标签: c struct

我有一个结构:

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)。

2 个答案:

答案 0 :(得分:1)

正如您在评论中提到的,scalar_t实际上是double,所以 printf("%d")解释错了。一个好主意是捆绑 scalar_t具有打印其值的功能, 或至少包含正确的printf格式说明符的常量。 这样typedef的灵活性不会丢失。例如:

#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);

答案 1 :(得分:0)

只是一个例子

player_data_t foo;

foo.pos.x = 10.;

printf ("%lf\n", foo.pos.x);