[英]Printing a simple array in C++
当我使用C ++时,我是一个新手,但是基本上我正在尝试使用以下代码打印数组:
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <numeric>
#include <math.h>
#include <iterator>
#include "rect_plate.h"
#include "numeric_constants.h"
using namespace std;
using std::vector;
// function prototypes
vector<double> generateRange(double a, double b, double c);
double lengthX;
double lengthY;
double resX;
double resY;
double Nx = lengthX / resX;
double Ny = lengthY / resY;
double deltaX = lengthX / Nx;
double deltaY = lengthY / Ny;
// function to calculate array
vector<double> generateRange(double a, double b, double c) {
vector<double> array;
while (a <= c) {
array.push_back(a);
a += b; // could recode to better handle rounding errors
}
return array;
}
vector<double> xSpace = generateRange(deltaX / 2, deltaX, lengthX);
vector<double> ySpace = generateRange(deltaY / 2, deltaY, lengthY);
int main()
{
// print array
for (int i = 0; i < Nx - 1; i++)
{
cout << "Test" << xSpace[i] << endl;
}
system("pause");
return 0;
}
但是当我运行可执行文件时,控制台中没有任何输出。 我得到的只是“按一个键继续”,然后退出控制台。
我正在将一些过程MATLAB转换为OO-C ++。 我有一个带有对象的类设置,但是现在删除了那些对象以检查我的变量是否正确初始化。 我知道在C#中,有一种方法可以遍历代码(F10-我正在使用VS2017),当您将鼠标悬停在给定变量上时,它会向您显示值,但没有发现与C ++类似的东西,所以我现在只是打印(或至少尝试打印)所有内容。
好,让我们逐步进行
double lengthX;
double lengthY;
double resX;
double resY;
这些变量的值是多少? C ++规则表示它们全为0.0
(因为它们是未初始化的globals ,并且globals首先要零初始化)。
double Nx = lengthX / resX;
double Ny = lengthY / resY;
这些变量的价值是什么? 从上一节开始,它是0.0/0.0
。 根据几乎普遍使用的IEEE标准(一个特殊的数字,称为NaN
,NaN代表“非数字”。
double deltaX = lengthX / Nx;
double deltaY = lengthY / Ny;
这些变量的价值是什么? lengthX
为零,但Nx
为NaN
。 同样,根据IEEE标准,在另一个NaN
对NaN
resul进行的任何操作,因此这些变量也是NaN
。
因此,您最后使用NaN
调用了generateRange
作为第一个参数。 在generateRange
内部,此表达式的值是什么? 记住a
是NaN
。
while (a <= c) {
IEEE标准说,将NaN
与任何事物进行比较始终是false
。 因此,您的while循环永远不会输入,并且什么也不会添加到您的数组中。
显然,代码的一般问题是您从未给初始变量提供任何值。 您应该为这些变量分配一些数字。 然后, 在设置完所有变量之后(可能是来自用户的输入),从main
函数内部调用generateRange
是传统的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.