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的补码
本回答被提问者和网友采纳