#include
using namespace std;
int fa(const int *begin,const int *end)
{
int sum=0;
while(begin!=end)
sum+=*begin++;
return sum;
}
int fb(int a[],size_t size)
{
int sum=0;
for(size_t i=0;i!=size;i++)
sum+=a[i]++;
return sum;
}
int fc(int *begin,size_t size)
{
int sum=0;
int *p=begin;
while(p!=begin+size)
sum+=*p++;
return sum;
}
int main(){
int a[]={1,2,3,4};
cout<<"The sum is:"<<fa(a,a+4)<<" "<<fb(a,4)<<" "<<fc(a,4)<<endl;
}
请问为什麽fa fb fc实现的功能一样可是输出的却是14 10 10呢 编译环境为devcpp4.81
每次写i++,都感觉在说“我草”…(i++,i艹,我艹)
可以在函数里面设置一个打印的功能,这样就知道自己加了什么数了
fa传递的元素正确吗?end应该是a+3吧
不对啊,我vs试了一下是10啊
重新分析了一下你的代码,现在做一个完整的解答
最后cout执行的时候,顺序为fc,fb,fa
fc所加的四个数分别为1,2,3,4
fb执行时,数组变成了2,3,4,5(a[i]++造成)
所以fa的数值和变成了14
因此fa和fc的功能是一样的,fb是不同的
以上,望采纳
++,也不能乱用啊,a[i]++,显然用错了