编写一个函数,要求输入任意两个无符号32位整形数,在控制台打印两个数相加的结果,要求禁止使用64位变量。
想法:
无符号整型最大32位,相加超过会产生进位,一个数c存储低32位,两个a,b的32位数相加,另一个数d存储高32位的进位。
#include<stdio.h>
int sum(unsigned int a,unsigned int b)
{
//两个32位整形相加
unsigned int c=a+b;
unsigned int d;
//产生进位
if(c<a || c<b) //进位
{
d=1;
}else
d=0;
// 进位d c
printf("%d,%d\n",d,c);
return 0;
}
int main(int argc, const char *argv[])
{
unsigned int a=0xfffffffe;
unsigned int b=0xf;
sum(a,b);
return 0;
}