首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么是int/int = int?

为什么是int/int = int?
EN

Stack Overflow用户
提问于 2015-01-24 21:29:09
回答 1查看 792关注 0票数 5

为什么当我除以两个整数时,结果是一个整数而不是一个浮点数,为什么选择这个设计决策?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-24 21:55:07

当早期C被设计时,许多当代硬件没有浮点支持.

当浮点类型通过其前身(BCPL和B)添加到C中时,除法操作符的整数语义保持不变。

BCPL手册提供了一个有趣的读物(强调我的意思):

5.1算术表达式 句法形式: E1 * E2E1 / E2E1 rem E2E1 + E2+E1E1 - E2-E1 语义:所有这些运算符都将其操作数的Rvalue解释为有符号整数,而都生成整数结果。 … 除数运算符/得到正确的结果[如果E1可被E2整除,则E1E2除法;否则它是与实现有关的,但舍入误差永远不会大于1。 操作符rem生成E1的其余部分除以E2;其确切的规范取决于实现。

很明显,可移植性不是一个问题,语言可以做任何底层硬件所做的事情。

即使在今天,仍然有很多平台支持C,但没有浮点硬件(例如,小型嵌入式平台)。

一些现代高级语言选择将int / int定义为浮点除法.例如,Python3有一个单独的运算符//,用于整数除法。有趣的是,整数除法运算符有与C对应的舍入规则不同。*

如果您对C的历史感兴趣,请看一下Dennis的C语言的发展

* Python整数也很有趣,因为它们是任意精度

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

https://stackoverflow.com/questions/28130439

复制
相关文章

相似问题

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