[英]Expression result unused, image generation
我正在嘗試使用此代碼生成圓形圖像。
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
double e, f;
double scaler (double a, double b) {
if (a < 256) { e = (-1) * a / 256.0;
if (b < 256) {
f = b / 256.0;
} else {
f = (-1) * (b - 256.0) / 256.0;
}
} else { e = (a - 256.0) / 256.0;
if (b < 256) {
f = b / 256.0;
} else {
f = (-1) * (b - 256.0) / 256.0;
}
}
return e, f;
}
int main () {
int max_color = 255;
int dimention = 512;
ofstream fout;
fout.open("mandeloutput.ppm");
fout << "P3\n" << dimention << " " << dimention << endl << max_color << endl;
for (int i = 0; i < dimention; i++) { f = i;
for (int j = 0; j < dimention; j++) { e = j;
scaler (e, f);
cout << fixed << setprecision(5) << e << " " << f << endl;
if ( e*e + f*f <= 1) {
fout << right << setw(4) << 0 << setw(4) << 0 << setw(4) << 0 << " ";
} else {fout << right << setw(4) << 255 << setw(4) << 255 << setw(4) << 255 << " ";}
}
fout << endl;
}
}
我不明白為什么我的變量e總是為0,為什么我在標題中看到關於縮放器中該變量的錯誤?
return e, f;
不按照您的想法去做。 逗號運算符僅計算並丟棄e
,然后將f
的值作為函數結果返回。 由於這些都是全局變量,因此無需從此函數返回任何內容,但是最好不要使用全局變量並正確地執行此操作。 刪除全局聲明double e, f;
並將函數更改為如下所示:
void scaler (int a, int b, double &e, double &f) {
if (a < 256) { e = (-1) * a / 256.0;
if (b < 256) {
f = b / 256.0;
} else {
f = (-1) * (b - 256.0) / 256.0;
}
} else { e = (a - 256.0) / 256.0;
if (b < 256) {
f = b / 256.0;
} else {
f = (-1) * (b - 256.0) / 256.0;
}
}
}
然后在您的主要功能中更改以下行:
for (int i = 0; i < dimention; i++) { f = i;
for (int j = 0; j < dimention; j++) { e = j;
scaler (e, f);
...
對此:
for (int i = 0; i < dimention; i++) {
for (int j = 0; j < dimention; j++) {
double e, f;
scaler (j, i, e, f);
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.