#1关于函数参数变量的思考

来源:互联网 发布:ubuntu 用户提权 编辑:程序博客网 时间:2024/06/05 18:40

先放下代码

#include <iostream>

using namespace std;

float fx(int);
int const i=10;
int a[10]={1,2,3,4,5,6,7,8,9,10};
int main() {
cout<<fx(i+1);//计算数组中10个数和的平均数
}
float fx(int i){
float avg=0;
for(int x=0;x<i;x++){
avg+=a[x];
}
return avg/i;

}

========================

这段代码是做作业时出现问题的简化版,运行得出来的结果却是5,并不是正确答案5.5,到底是出了什么问题呢?

问题其实很简单,就是出在fx()函数中的return avg/i; 在这之前我已经定义了常变量i=10,不过在这个函数体中的参数名也是i。

当时在写代码的时候就习惯性的把i当作10使用了,如果在那句代码前加上一句cout<<i<<endl;就会发现此时的i就是引用fx()函数的参数i+1,也就是说此时的i是11,并不是10。

========================

总结

虽然这看似是一个小问题,不过在我看来,这个不好的习惯会影响工程量大的工作。这个特别傻的bug让我找了将近一个钟。建议是不要把函数的参数名与经常使用的变量名写成同一个词,不然出现这种低级错误将要耗费非常多的时间。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 北京一环 北京特色 北京b80 北京英文 北京工资 北京越野 北京路 北京好吃的 北京40报价 北京汽车b40 北京市 介绍北京 北京bj20 北京小区 北京jeep 北京温度 北京吉普b40 北京找工作 北京b40 北京怎么样 北京介绍 北京美食街 北京在哪里 b40北京吉普 北京楼市 上海与北京 朝阳到北京 北京与上海 于北京 由北京 北京80 现在北京 北京到 北京的公司 北京中 北京啊北京 北京名企 北京气车 关于北京 北京现在 北京地区