为什么我的函数以向量数组为参数却没有给出任何值


void plusMinus(vector<int> arr) {
double p=0, n=0, z=0;
for(int i=0; i<arr.size(); i++)
if(arr[i]>0)
p += 1/arr.size();
else if(arr[i]<0)
n += 1/arr.size();
else
z += 1/arr.size();
cout<<p<<endl<<n<<endl<<z;
}

在for循环中,p、n和z的值不变。有人能告诉我为什么吗?

在函数中执行1/arr.size()。结果是一个值为0的整数。

您需要在分区中至少使用一个double

示例:

p += 1. / arr.size();

nz也执行相同操作。