我的程序中有一个结构
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]);
}
但我得到了奇怪的结果。我该如何解决这个问题。
答案 0 :(得分:2)
首先,x[i]
是struct data
类型的变量,并且没有格式说明符可以直接打印 。您需要引用确切的成员变量(x[i].a
,x[i].b
)并单独打印。
也就是说,当您显示代码时,%x
需要unsigned int
类型的参数,并且您无法在其中传递double
变量。这是undefined behavior。
引用C11
,章节§7.21.6.1/ p8
中的十进制(
o,u,x,X
unsigned int
参数转换为无符号八进制(o
),无符号 样式 dddd; [...]u
)或无符号十六进制表示法(x
或X
)
一般情况下,使用%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);
}