有以下类型的三个变量
uint64_t old_addr, new_addr;
int delta;
我想做这个任务
new_addr = old_addr + delta;
然而问题是,当old_addr=915256
和时delta=-6472064
,new_addr
成为18446744069414584325
要解决这个问题,我必须检查一些事情:
if ( delta < 0 ) {
if ( old_addr < abs(delta) )
new_addr = 0;
else
new_addr = old_addr + delta;
}
有没有更好更有效的方法?