关于c语言求和,为什么结果不一样

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:27:22
申请内存*A,数据为width=256,height=28的数据如下;
for(int i = 0; i < w * h; i++)
{
A[i] = (float)(i + 1);
}
对其求和法一:
float sum=0.0;
for(unsigned int i = 0; i < radial * circle; i++)
{
sum += h_ComImage[i];
}
法二:
for(int i = 0; i < h; i++)
{
float sum = 0.0f;
for(int j = 0;j < w; j++)
{
sum += A[i * w+ j];
}
allsum += sum;
}
为什么sum 和allsum的结果不一样,如果用数学方法计算结果是allsum,不明白到底哪个对???

数字在计算机中都是以补码存储的,正数的补码为本身,负数的补码为其反码加一。
一个无符号数,显然没有符号位,(而正数的最高位---即符号位--是0,负数是1)所以最高位也是有效位,如果拿一个无符号数和一个正数比(unsigned int i = 0; i < radial * circle; i++) ,我想是没有多大意义的。