c++ - 打印双打数组会产生意想不到的结果
问题描述
在我正在编写的程序中,我在从数组打印数据时遇到了意外的输出。我试过浮动和双重。这是代码:
#include <iostream>
int main()
{
double vector[3]{ 193.09375 , 338.5411682 , -4.0 };
double pVecX{ 193.09375 };
double pVecY{ 338.5411682 };
double pVecZ{ -4 };
std::cout << std::dec << vector[1] << '\n' << vector[2] << '\n' << vector[3] << '\n' << '\n';
std::cout << std::dec << pVecX << '\n' << pVecY << '\n' << pVecZ << '\n';
system("Pause");
return 0;
}
这是输出:
338.541
-4
1.42292e-306
193.094
338.541
-4
Press any key to continue . . .
问题: 我希望向量以与它们输入数组的方式相反的顺序打印。(即使我要求 [1]..[2]..[3],它正在打印 [2]..[3]..[1](我认为这是顺序))
当数组的一部分时,数字“193.09375”变成一个(看似)随机标记的数字,并且每次程序运行时都不同。
我正在阅读有关变量的信息,并了解存储在其初始化范围之外的变量会导致回绕,我只是不知道为什么会发生这种情况。(我假设它是基于否定符号。)
我确信我错过了一些简单的东西,而且我还很新。
解决方案
s 索引从Array
开始0
。所以当你说vector[3]
你实际上是越界了。
您只有 0、1 和 2 个索引或下标。虽然你确实有 3 个元素。0 将引用您的第一个元素,1 将引用您的第二个元素,2 将引用您的 3 元素,依此类推。
(就像我在评论中提到的那样。)
你应该有这样的东西:
std::cout << std::dec << vector[0] << '\n' << vector[1] << '\n' << vector[2] << '\n' << '\n';
这应该可以解决您的问题。还可以考虑使用std::vector
.
另请阅读为什么不应该使用system("Pause");
.
推荐阅读
- bash - Printf 无法使用使用 bash 读取命令获得的输入
- c - 验证 c 中数字的输入
- c# - 在 DevExpress LookupEdit 上配置或禁用验证?
- node.js - 如何修复 npm ERR!每次我在命令行中输入 npm start 时得到的代码
- python - 从 .msg 文件中提取 .xlsx 附件
- pandas - 根据数据框的大小动态选择行
- python - Pandas DataFrame:按列分组、按日期时间排序和按条件截断分组
- pandas - 一个函数,它将返回数据框中每列中 3 个最高条目的索引
- ios - 与桌面应用程序一样在登录时获取用户 ID 选择屏幕,而不是每次都输入用户 ID
- javascript - 仅在选中单选按钮时运行 javascript