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;
}
より効率的な方法がありますか?
私は2番目は 'new_addr' ...そうでなければ、あなたが編集した....右 – xanatos
:-)元の問題に戻る前に、他にあり願うポスト – mahmood
あなたはこれらの変数'呼ばれてきたことを考えます_addr'はメモリアドレスですか?もしそうなら、 'intptr_t'(署名されています)と' delta'の 'ptrdiff_t'を使うべきです。 –