问题
两个32位无符号整形变量相加,不使用64位无符号整形变量,打印出结果
功能函数代码及其测试代码
#include<stdio.h>
#include<stdint.h>
void func(uint32_t a,uint32_t b)
{
uint32_t high=0,low;
low=a+b;
if(low<a || low<b) //判断a+b有无超过32位无符号整形的范围
{
high=0x1;
printf("%#x%08x\n",high,low); //打印结果
printf("sizeof_h=%ld,sizeof_l=%ld\n",sizeof(high),sizeof(low));
}
else
{
printf("%#x\n",low);
printf("sizeof_h=%ld,sizeof_l=%ld\n",sizeof(high),sizeof(low));
}
}
int main()
{
uint32_t a,b;
scanf("%d %d",&a,&b);
//a=0xffffffff;
//b=0x7;
func(a,b);
}