首页 > 解决方案 > 输出浮点数组值无法按预期工作

问题描述

首先,如果这是一个非常琐碎的问题,我很抱歉。我是新手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

如何正确分配 0 1 和 2 值以float键入大小数组,3然后在循环中读取这些值?

标签: c++arrays

解决方案


这是错误的:

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

%d期望一个int,但是你传递一个float-> undefined behavior,任何事情都可能发生。改为使用%f

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


推荐阅读