首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么整数除法会截断为0而不是负无穷大?

问为什么整数除法会截断为0而不是负无穷大?
EN

Stack Overflow用户
提问于 2014-09-19 05:34:21
回答 1查看 117关注 0票数 0

正如在C和许多其他编程语言中定义的那样,这是整数除法中众所周知的不一致:除以整数N会得到范围为0..N而不是0..|N|的余数。IMO这会对某些应用程序产生负面影响,例如,如果您在整数网格上显示由定义的图像,则最好将(0,0)放在图像区域之外:否则,在某些图像操作中,您将在x==0和y==0得到一条可见线。

你能举一个实际的整数除法用法的例子,其中截断到0比截断到负无穷大更能满足编程意图吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-19 07:47:27

这不是编程语言设计的问题,真的。

高级编程语言为了与低级语言保持一致而截断。

低级语言会被截断,因为硬件操作就是这样做的。

后来的几代硬件选择向后兼容早期的几代。

要真正回答这个问题,你必须回到过去,原因可能像“它缩短了进位链”一样微妙。

但请注意,任何其他选择都会破坏分布性:

代码语言:javascript
复制
// both of these are true if integer division truncates toward zero, else uncertain
-1 * b / c == -1 * (b / c)
-1 * b % c == -1 * (b % c) % c

都是很好保留的身份。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25922750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档