首先,很抱歉,这是一个非常琐碎的问题。我是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值,然后循环读取这些值?
答案 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';