C51程序,为什么函数的返回值不是0x00

unsigned char getValue()
{
unsigned char buf[]={0x08,0x00,0x00,0x02,0x23,0x00,0x00,0x2D};
unsigned char x=0;
unsigned int sum,tem_sum;

for (x=0;x<6;x++)
{
sum=sum+buf[x];
}
tem_sum=buf[6]*256 +buf[7];
if (sum==tem_sum)
{
return 0x00;
}
else
return 0x01;
}

第1个回答  2012-06-25
因为unsigned int sum,tem_sum;
没有初始化
unsigned int sum = 0 ,tem_sum;
就OK了追问

初始化之后,结果还是一样,返回0x01;

本回答被提问者和网友采纳
第2个回答  2012-06-27
1. sum 需要初始化
2. tem_sum=buf[6]*256 +buf[7];
改成
tem_sum=((unsigned int)buf[6])*256 +buf[7];
再试一试
第3个回答  2012-06-28
因为sum!=tem_sum,所以返回的是0x01