gpt4 book ai didi

c++ - 在 C++ 中从有符号整数获取数量直到零的有效方法?

转载 作者:行者123 更新时间:2023-11-30 03:44:28 27 4
gpt4 key购买 nike

在 C++ 中递减和返回有符号长整数的有限部分直到零的有效方法是什么。部分大小以无符号整数定义?

在小型 16MHz 处理器的繁忙中断例程中使用。

我正在尝试这样的事情:

#define limit(amt,lim) ((amt)<(-lim)?(-lim):((amt)>(lim)?(lim):(amt)))

long pile = 3452;
int maxportion = 100;


while (pile!=0)
{

int portion;
portion = limit(pile, maxportion);
pile -= portion;

//Code to apply portion here..

}

while 循环只是为了演示。对于实现,我希望找到一个“减去并返回部分”,无论堆是否为零,每次中断都可以执行一次。

最佳答案

正如@M.M 所写,您可能会考虑将宏更改为内联函数。我唯一要补充的是,如果你知道案例的分布,你可能会使用类似 likely and unlikely 的东西来加快速度。 .例如,这里是针对 |amt| 的情况优化的代码< |lim|

inline long limit(long amt,long lim)
{
if(unlikely(amt < -lim))
return -lim;
else
{
if(unlikely(amt > lim))
return lim;
return amt;
}
}

像往常一样表现,YMMV。您应该剖析并查看。

关于c++ - 在 C++ 中从有符号整数获取数量直到零的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35409839/

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