首页 > 解决方案 > 打印双打数组会产生意想不到的结果

问题描述

在我正在编写的程序中,我在从数组打印数据时遇到了意外的输出。我试过浮动和双重。这是代码:

#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”变成一个(看似)随机标记的数字,并且每次程序运行时都不同。

我正在阅读有关变量的信息,并了解存储在其初始化范围之外的变量会导致回绕,我只是不知道为什么会发生这种情况。(我假设它是基于否定符号。)

我确信我错过了一些简单的东西,而且我还很新。

标签: c++

解决方案


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");.


推荐阅读