为什么不给C赋予初值,结果就狂乱了?

来源:百度知道 编辑:UC知道 时间:2024/05/06 10:21:08
看代码先
void pingjun()//求平均值函数
{
int a,i;
float c,b,aver;
c=0;//这里,如果不要这一行代码,结果就不是想要的了,为什么?
cout<<"要计算几个数?"<<"计算:";
cin>>a;
for(i=1;i<=a;i++)
{
cout<<"输入第"<<i<<"个数:";
cin>>b;
c+=b;
}
aver=c/a;
cout<<aver;
}
为什么,希望介绍的详细点,比如,什么时候有的值需要赋予初值
(^ε^)-☆chu!!

没初值,程序怎么可以为他计算啊.
比如你定义一个整型变量a,
然后就直接输出printf("%d",a);
肯定会错的了,你都没给a值,让他输出什么,肯定是乱码啊.会出错的...

比如,什么时候有的值需要赋予初值
这个我就帮不了你了啊,具体情况要具体解决,题做多了自然会明白,大家也都是这么琢磨出来的.
祝LZ成功!

没给C付值,c的值是随机的

内存分为
代码区
全局数据区
堆区
栈区

恩,在主函数外声明的变量,或者静态变量(static关键字声明)存于全局区,这个区的自动初始化为零,

一般局部变量,比如程序中的c,声明时只是分配空间,空间中的值没有删去,还是原来的值。c的空间值是前面遗留下来的。这常常是不可知的。所以局部变量必须初始化。呵呵,高手如果知道原来的值,不初始化也可以。那人肯定是超人。

恩,简略说一下

所有值最好都赋上初值,不然后来调错会很痛苦

直白地讲:
内存地址是重复使用的,但是每个存储单元每次使用完并不清零.所以下次定义某个变量被分配到这个存储单元的时候,如果不赋初值,变量就会还是上次的值.
如果一个变量需要多个存储单元,那么对应地址里的值就会相当混乱.

比如: 有四个连续地址原来存放的是四个CHAR变量'A' 'B' 'C' 'D',现在释放了.
换了个程序定义了个INT变量,占4个字节空间.正好分配到刚刚那里.
如果不赋初值,那么它的值就是HEX(44434241)也就是1145258561.那还不就"狂乱"了?

gbwzx
Alec_1111
两位说的很明白了.
不是为什么一定要赋初值,没说一定要.
像这个程序里面.b,和ever并不用赋,因为在接下的程序里都有直接赋值的语句.
而c却要赋个初值,实际这里的意义是清零.因为c不是直接赋值而是c=c+b.
我们想要的是c本来