c/c++ unsigned类型的溢出问题
1.
c/c++中的unsigned 类型的变量发生溢出时,是舍掉溢出的部分,直接取低位部分作为结果,还是结果是未定义的?
如果:
unsigned a=0xffffffff;
unsigned b=a+3;
那么此时b=2,还是b的值是未定义的?
2.
无符号数作减法是否会发生溢出?
如果
unsigned a=1;
unsigned b=4;
那么
a-b 会溢出吗?
(我的理解是,因为a-b=-3超出了usined的表示范围,因此会发生溢出)
b-a 会溢出吗?
(我的理解是,因为在计算机中,减法是按补码计算的,所以b-a=4+(-1)=4+0xffffffff,这超出了usined的表示范围,因此也会溢出。)