我在一个简单的程序中有一个非常奇怪的问题,一直无法达成任何合理的结论。当我将程序的输出重定向到一个文件时,我得到的结果与打印到stdout时不同。当我打印到文件时,结果是正确的。我不明白为什么它首先会有所不同。这是一个片段。有任何想法吗?输出错误在c + +
for (int i = 1; i <= N; i++) {
double x = i*h;
for (int j = 1; j <= N; j++) {
double y = j*h;
double bi = h*h*f(x,y);
if (x+h == 1.0) {
bi += boundary_f(1,y);
}
if (y+h == 1.0) {
bi += boundary_f(x,1);
}
cout << "i=" << i << "; j=" << j << "; b=" << bi << "\n";
b(k,1) = bi;
++k;
}
当打印到标准输出和重定向到文件时,我得到不同的结果!似乎y + h == 1.0的条件不会计算为true,即使当y + h为1.0时,输出到stdout但是被重定向到文件时,它的计算结果是正确的。
程序是否写入cerr?如果是这样,你看到的问题是与cout和cerr输出混合? – Doug 2010-09-24 11:27:11
不仅cout。当重定向到cout vs file时,似乎条件(y + h == 1.0)的计算方式不同。 – user236215 2010-09-24 11:30:58
@ user236215:您能否显示您是如何从命令行运行程序的,以及某些(如果不是全部)输出?如果没有这个或完整的代码,就不可能重新创建问题或推测它发生的原因。 – 2010-09-24 11:40:52