c++ - 输出浮点数组值无法按预期工作
问题描述
首先,如果这是一个非常琐碎的问题,我很抱歉。我是新手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
然后在循环中读取这些值?
解决方案
这是错误的:
printf("%d\n", y[i]);
%d
期望一个int
,但是你传递一个float
-> undefined behavior,任何事情都可能发生。改为使用%f
。
在 C++ 中,考虑使用 IO 流而不是 C stdio 函数。
推荐阅读
- python - Python中txt文件中的单词和短语频率
- php - 单击浏览器后退按钮时如何在 PHP 中销毁会话?
- c - 按索引更新值 - 结构内的 void 指针数组
- sql - MS-Access VBA DoCmd.RunSQL 问题
- c# - 如何在不扩展 MVVM 的情况下向模型类添加新属性
- python - 在 python 中自动生成应用函数
- windows - Windows Docker 桌面 Linux 模式 - docker 容器时间偏差
- c# - 如何在 System.Text.Json.Serialization 上强制使用 Newtonsoft.Json
- python - 询问地点趋势时的 Twitter API 错误
- typescript - 我在哪里可以看到 deno 下载的包?