我实现了计算奇数位置数组元素乘积的函数。金额有效。产品不是。怎么了?0 一直显示。将 1 放入结果中...
#include <iostream>
using namespace std;
// массивы чисел
double Arr_double[5] = {1.2, 2.2, 3.3, 4.4, 5.5};
float Arr_float[5] = {6.1, 7.1, 8.1, 9.1, 10.1};
long Arr_long[5] = {11, 12, 13, 14, 15};
// прототипы перегруженных функций
double product(double * Arr);
float product(float * Arr);
long product(long * Arr);
int main() {
cout << product(Arr_double);
return 0;
}
// реализация прототипов
double product(double * Arr) {
double result = 1;
for (size_t i = 0; i < sizeof(Arr); i++) {
if (i % 2 == 0) {
result *= Arr[i];
}
}
return result;
}
看:
你的
Arr
功能是什么?指针。所以sizeof(Arr)
- 指针占用的字节数。在 32 位系统上为 4 个,在 64 位系统上为 8 个。您可能有一个 65 位程序,您超出了传递数组的范围并达到零或其他一些麻烦 - 无论如何都是 UB...