gpt4 book ai didi

c++ - 将 "int"添加到 "uint_64t"

转载 作者:行者123 更新时间:2023-11-30 00:56:40 25 4
gpt4 key购买 nike

一共有三个变量,类型如下

 uint64_t old_addr, new_addr;
int delta;

我想做这个作业

 new_addr = old_addr + delta;

但是问题是,当 old_addr=915256delta=-6472064 时,new_addr 变为 18446744069414584325

为了解决我必须检查一些事情的问题:

 if ( delta < 0 ) {
if ( old_addr < abs(delta) )
new_addr = 0;
else
new_addr = old_addr + delta;
}

有没有更好更高效的方法?

最佳答案

这称为饱和加法,一些处理器为此有特殊的机器指令。您可以将该代码提取到内联函数中,并根据目标执行环境使用机器指令。

而不是 abs(delta)你可以简单地写-delta ,因为你已经知道 delta < 0 .

关于c++ - 将 "int"添加到 "uint_64t",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com