Функция работает нормально, но возвращает мусор

У меня есть эта функция:

float calc_nnc(struct ImageWindow *window1, struct ImageWindow *window2) {
    /* More code */
    double numerator = (double) sum_a_x_b;
    double divisor = ( sqrt(sum_a) * sqrt(sum_b) );
    double result = numerator / divisor;
    float resultf = (float) result;

    printf("numerator: %lf, divisor: %lf, result: %lf, resultf: %f\n",
        numerator, divisor, result, resultf);

    return resultf;
}

printf печатает результаты, которые я ожидаю увидеть:

axb = 1383, a = 1776, b = 4959
числитель: 1383.000000, делитель: 2967.690011, результат: 0.466019, resultf: 0.466019

Однако, когда я пытаюсь распечатать результат calc_nnc в другой функции:

float nnc_likeness;
unsigned int x, y;

for (y = 0; y <= y_max; y++) {
    for (x = 0; x <= x_max; x++) {
        set_image_window(&window_big, big, x, y, width, height);
        nnc_likeness = calc_nnc(&window_small, &window_big);
        printf("likeness: %f\n", nnc_likeness);
    }
}

, я получаю мусор:

подобие : 1055824384.000000

То естьЯ вижу правильные значения calc_nnc вычисляет, но сразу после этого я вижу искаженное значение для nnc_likeness .

Есть идеи, что происходит? Спасибо!

5
задан mskfisher 11 May 2012 в 14:43
поделиться