div_down(-4,3) ==> -2div_up(4,3) ==> 2div_to_zero(-4,3) ==> -1div_to_nearest(5,3) ==> 2
我希望它能够在编译时检测目标机器的行为并生成适当的最佳实现.类似于模数的东西也会很好,在编译时抽象出负 *** 作数的未定义行为.
这存在吗?
如果没有,有什么好办法呢?我可以想到几种可能的方法:
>尝试将它们实现为静态优化的单个表达式
>使用常量表达式来检测目标行为,并从多个实现中进行选择,使用模板进行选择(但具体如何?)
int div_down(int n,int d) { if (n < 0) { return -((d - n - 1) / d); } else { return n / d; }}int div_up(int n,int d) { if (n < 0) { return -(-n / d); } else { return (n + d - 1) / d; }}int div_to_zero(int n,int d) { return n / d;}int div_to_nearest(int n,int d) { if (n < 0) { return (n - d/2 + 1) / d; } else { return (n + d/2) / d; }}总结
以上是内存溢出为你收集整理的C用于整数除法,具有明确定义的舍入策略全部内容,希望文章能够帮你解决C用于整数除法,具有明确定义的舍入策略所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)