在struct中打印数组

时间:2016-07-19 07:54:37

标签: c++ c struct printf

我的程序中有一个结构

struct data
{
double a;
double b;
}x[ ]={0.1 , 0.1,
0.2 , 0.1,
0.3 , 0.1,
0.4 ,0.2,
0.5 , 0.3,
0.6 , 0.4,
0.1 , 0.4,
0.7 , 0.4,
0.8 , 0.8,
0.6 , 0.6, 
0.6 , 0.6, 
0.6 , 0.6};

该阵列有12个成员,如图所示。经过一些计算后,我想逐个显示成员。我怎样才能实现它。

现在我正在这样做。

for (i=0;i<12;i++)
{
printf("\t index %x value %x  \n\r",i, x[i]);
}

但我得到了奇怪的结果。我该如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

首先,x[i]struct data类型的变量,并且没有格式说明符可以直接打印 。您需要引用确切的成员变量(x[i].ax[i].b)并单独打印。

也就是说,当您显示代码时,%x需要unsigned int类型的参数,并且您无法在其中传递double变量。这是undefined behavior

引用C11,章节§7.21.6.1/ p8

  

o,u,x,X
unsigned int参数转换为无符号八进制(o),无符号   样式 dddd; [...]

中的十进制(u)或无符号十六进制表示法(xX

一般情况下,使用%f打印double值。

答案 1 :(得分:0)

您无法使用x[i]打印这两个值。您必须逐个打印。

您可能需要以下内容:

for (i=0;i<12;i++)
{
    printf("\t index %d value %f, %f  \n\r",i, x[i].a, x[i].b);
}