输出浮点数组值无法正常工作

时间:2018-08-01 11:29:13

标签: c++ arrays

首先,很抱歉,这是一个非常琐碎的问题。我是C++的新手,正在做非常基本的测试。我检查了一些有关指针和数组的教程。尽管如此,我仍然遇到了一个问题,无论我尝试什么,该问题都不会消失。

问题在于,在将值设置为float类型数组之后,所有值都将读取为0(零)。如果对int数组执行完全相同的操作,则可以正确读取值。

代码:

int N = 3;

int* x = new int[N];
float* y = new float[N];

for (int i = 0; i < N; ++i) {
    x[i] = (int)i;
    y[i] = (float)i;
}

for (int i = 0; i < N; ++i) {
    printf("%d\n", x[i]);
    printf("%d\n", y[i]);
}

输出:

  

0

     

0

     

1

     

0

     

2

     

0

如何正确地为大小为float的{​​{1}}类型数组分配0 1和2值,然后循环读取这些值?

2 个答案:

答案 0 :(得分:3)

这是错误的:

printf("%d\n", y[i]);

%d期望int,但是您将其传递给float-> 未定义的行为,则可能发生任何事情。请改用%f

在C ++中,考虑使用IO流而不是C stdio函数。

答案 1 :(得分:2)

for (int i = 0; i < N; ++i) {
printf("%d\n", x[i]);
printf("%d\n", y[i]);
}
printf中的

%d表示您正在打印一个整数,应该改用%f。

更好的方法是使用std :: cout,这样您就不必担心这些事情了。

在文件顶部添加#include <iostream>

您可以写

std::cout<<x[i]<<'\n';
std::cout<<y[i]<<'\n';