| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1455 人关注过本帖
标题:声明变量时赋初值,得出正确结果;不赋初值得出错误结果
取消只看楼主 加入收藏
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
声明变量时赋初值,得出正确结果;不赋初值得出错误结果
程序代码:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 *求方差,公式为[(x1-y)^2+(x2-y)+……]/n,其中xi为所求方差的数字,y为平均值,n为+

 *所求方差的数字的个数                                                        +

 *要求是输入整形数,返回整形数                                                +

 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 */
#include <stdio.h>
#include <math.h>

//int function(int *calculate[],int arrayLen);

int main(void)
{
    int calculate[3]={1,2,3};//输入的数字储存在数组calculate中
    int arrayLen=3;//输入数字的个数
   

    printf("%d\n",function(calculate,3));
}

int function(int calculate[],int arrayLen)
{
    int i;
    float sum=0,average=0,square=0,square_average=0;
    //当sum,average,square,square_average不赋初值得时候,得出的结果是错误的,
    //为什么会这样?这一点疑惑不解。
   

    for(i=0;i<arrayLen;i++)
        sum+=calculate[i];
    average=sum/arrayLen;
    for(i=0;i<arrayLen;i++)
        square_average+=(calculate[i]-average)*(calculate[i]-average);
   

    return (int)square_average/arrayLen;
}

第23行,当sum,average,square,square_average声明而不赋初值的时候,得出的结果是-715027002,当给它们赋初值之后就会给出正确的结果0,为什么会这样?这一点疑惑不解。
搜索更多相关主题的帖子: 整形 声明 平均值 color 
2011-12-23 16:29
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 2楼 waterstar
在定义的时候没有赋值,如果这个时候直接用的话,当然就是无用的垃圾值;这里虽然没有马上赋值,但是后面在循环和各种语句中是用传递的数组candicates[i]给它们赋了值的,这个时候它们就不应当是垃圾值了吧,就应该是通过表达式得到的算术值了吧。

明察、慎思、笃行
2011-12-23 20:45
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 6楼 爱德华
谢谢了。
不赋值的时候,在linux下测试的时候,是正常的,给出正确的结果0;在windows下测试的时候会给出垃圾值。
赋值的时候,都是正常的,这应该跟操作系统的特性有关吧。

明察、慎思、笃行
2011-12-24 11:19
快速回复:声明变量时赋初值,得出正确结果;不赋初值得出错误结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017673 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved