我在一個簡單的程序中有一個非常奇怪的問題,一直無法達成任何合理的結論。當我將程序的輸出重定向到一個文件時,我得到的結果與打印到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