int a,b,c 请写函数实现c=a+b ,不可以改变数据类型,如将c改为long int,关键是如何处理溢出问题. 求分析

哆啦超二_ 2024-11-15 17:22:13
最佳回答
bool add(int a,int b,int *c){*c=a+b;if(a>0&&b>0&&*c<0)return fale;if(a<0&&b<0){a=-a;b=-b;if((a+b)<0)return fale;}return true;} 两个数相加,溢出的会被舍弃;怎么相加,数在内存里是啥值就直接相加(二进制相加),没减的,因为cpu只会加;至于内存里的情况,发我当时的笔记给你:其实所有数值都是以补码的形式储存在内存中,区别在于内存解释上,比如用unsigned int,int,short,long解释;例如:int m=7;7的补码为0111,那么就直接把0111放进内存m低位中,其它位以符号位0补足;unsigned int n=-7;-7的补码为1001,把1001放进n低位中,其它以符号位1补足,这里用无符号数解释内存n,那么执行cout<<n;就会输出11111111 11111111 11111111 11111001的十进制数;如果用符号数解释即int n=-7;那么就输出-7(11111111 11111111 11111111 11111001原码为10000000 00000000 00000000 00000111,最高位为符号位)用 = 号赋值就是内存段复制到内存段的操作;符号‘-’,实际就是按位取反然后加1;例如:-7,意思是把111按位取反加1得...1001其它以符号位1补足;也即-7的补码 20210311
汇率兑换计算器

类似问答
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。