verir:Fonksiyon Tamam çalışır, ancak ben bu işlevi var çöp
axb = 1383, a = 1.776, b = 4959
: görmeyi bekliyoruzfloat 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
baskılar sonucu pay: 1.383,000000, bölen: 2.967,690011, sonuç: 0,466019, resultf: Ancak 0,466019
, ben sonucu yazdırmak için deneyin Başka bir işlevde calc_nnc
arasında:
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);
}
}
alıyorum çöp:
benzerlik: Ben
calc_nnc
hesaplama olduğu doğru değerleri görüyoruz, ama hemen sonra gördüğüm edilir 1055824384,000000
nnc_likeness
için bozuk bir değer.
Neler olduğu hakkında bir fikrin var mı? Teşekkürler!
'calc_nnc' için, onu adlandırdığınız bağlamda doğru prototipe sahip olduğunuzdan emin misiniz? Derleyicinizin 'int' türünde bir dönüş türü olduğunu ve sistemin çıldırtıcı olduğunu varsaymak olabilir. Tüm uyarıların etkin mi? –
Aslında gerçekte olduğu gibi görünüyor - şimdi bir cevap yazıyor. –
Başlıktaki prototip aynıdır. Ben -Haydi 've bazı ilginç bir içgörü aldım. –