3
我已經寫了下面的函數查找在float數組最小和最大的元素:使用OUT參數,
void find_minmax_float(float * begin, float * end,
float ** min, float ** max) {
if(begin == end) { //if it is not an array
*min = *max = 0;
} else { //if atleast 1 element exist
*min = *max = begin;
while(++begin != end) {
if(*begin < ** min) *min = begin;
if(*begin > ** max) *max = begin;
}
}
}
我用下面的代碼進行測試:
float floats[] = { 0.9, 1.11, 2.35, 5.999 };
int size = sizeof(floats)/sizeof(floats[0]);
float * fmin;
float * fmax;
find_minmax_float(floats, floats + size, &fmin, &fmax);
printf("float[]\tmin=%f\tmax=%f\n", *fmin, *fmax);
,但我得到這個奇怪的在終端輸出:
float[] min=0.000000 max=5.999000
很顯然,我得到min
值不正確,而max
似乎沒關係。我無法弄清楚什麼是錯的!我應該得到min=0.900000
我試過0.1到0.9,我總是得到0.000000分鐘。
嗯 - [對我有用](http://ideone.com/GX2ryd) - 你在用什麼編譯器? –
@PaulR GCC 4.8.4 ok我會測試這個隔離的東西(現在它在一大堆垃圾裏) –
我會添加調試輸出來轉儲'find_minmax_float()'中使用的所有地址。此外,在'while'循環的頂部打印* begin,** min和** max的值也不會造成什麼影響。 – donjuedo