unsigned int 定义的是无符号整型,int 定义的是有符号整型,我们都知道数据在计算机中是以二进制形式存储的,如果int类型的数据用2个字节存储的话,将其定义成无符号整型的话,则所有的二进制位都被当成数值,所以能表示的数值范围就是0到65535;将其定义成有符号整型的话,二进制的最高位就被看成符号位,其余的才被看成数值,所以能表示的数值范围为-32768到32767。
目测楼主的程序存在以下问题:
1、函数的返回值不一致,函数头“unsigned int f()”说明函数要返回一个无符号整型,而函数中最后“return res”,要返回的“res”在函数内却被定义成“unsigned char res”,即这里返回的是无符号字符型;
2、“unsigned char res”说明定义的变量res是一个无符号字符型,用一个字节存储,存储的数据范围为0至255,可程序中利用一个循环来计算0至123的和,其结果超出了一个字节所能存储的最大值,却要存入一个字符型变量res中;
3、无符号字符型变量res未初始化,在循环中“res+=a”的执行中,结果难以预测。