我试图用7个元素打印float数组的值。我只分配了3个值,它们属于float,double和integer。解释与printf相关的c程序的结果值
代码:
#include <stdio.h>
int main(){
float array [7];
float f = 3.24;
double d = 23.5;
int i = 4;
array[0] = f;
array[1] = i;
array[2] = d;
int n = sizeof(array)/sizeof(float);
printf("Number of Elements : %d \n\n\n",n);
for(int j = 0; j < n ; j++){
printf("%.2f ,",array[j]);
}
printf("\b ");
}
我得到的输出如下所示: 数目的元素:7
3.24,4.00,23.50,-1#R,96627196995476105000000000000000.00,96629547147269436000000000000000.00,0.00
我想清楚我的代码是否正确?以及为什么最后四个值彼此不同。这些价值是什么?
您还没有分配您的阵列为任意值。这就是为什么在任何分配之前它都是填充**垃圾**值的原因。 – kuro
也许'float array [7] = {0};'会为您提供更多可预测的结果,并防止发生**未定义行为**,当您尝试访问阵列中未初始化的元素**时, [3]'。如果初始化数组的所有元素,则可以遍历整个数组而不调用未定义的行为,如果未能初始化数组,则必须将迭代次数限制为仅数组中的前三个已定义元素。 –
注:本声明:float f = 3.24;将一个'double'文字赋值给一个'float'变量。为了纠正产生'float'文字,文字的最后一个字符必须是'f' I.E. 'float f = 3.24f;' – user3629249