以下是我的代码
main()
{
int c[ ]={2.8,3.4,4,6.7,5};
int j,*p=c;
for(j=0;j<5;j++){
printf(" %d ",*p);
++p; }
}
输出
2 3 4 6 5
如何执行上述代码?
答案 0 :(得分:2)
它的执行完全按照您认为执行的方式执行:您在for
循环中打印数组元素,但是,您将数组元素设为int
,因此,当打印2.8
为双倍时,编译器会忽略该点之后的任何内容,意味着它将其视为2而不是2.8
答案 1 :(得分:2)
撰写声明时:
int c[ ]={2.8,3.4,4,6.7,5};
十进制值自动转换为整数。因此数组存储
2,3,4,6,5
所以你的输出就像它一样。 要使用小数,请使用float类型变量。
float c[ ]={2.8,3.4,4,6.7,5};
答案 2 :(得分:0)
int c[]
是整数。你可以试试。
float c[] = { 2.8, 3.4, 4, 6.7, 5 };
float *p = c;
for (int j = 0; j<5; j++){
printf(" %f ", *p);
p = p+1;
}
答案 3 :(得分:0)
如果你使用'float j'代替'int j'和'%f'而不是'%d',你会得到你想要的。 这里由于使用了int j和%d,只打印了数组中每个数字小数点前的部分。