【发布时间】:2016-12-27 21:39:13
【问题描述】:
我读过一个 c++ 教程,它说算术运算符返回可能的最小数据类型(即,如果添加 2 个 int,则返回类型将为 int,如果添加 float 和 double,则返回类型将为 double)。但是,它也表示对空头的算术运算返回整数。考虑到短裤占用的内存比整数少,为什么会发生这种情况?教程有误吗?本教程适用于 c++11,所以可能在 c++14 中已弃用?谢谢!
【问题讨论】:
-
"我读过一个 c++ 教程,它说算术运算符返回可能的最小数据类型" 是否可以在线获取,以便我们查看上下文?这似乎与正确答案相反。例如
1 + 2.0;不返回int。 -
2.0 是双...
-
不要怪语言,要怪你的架构。 (整数)c.p.u.s 中的算术处理要求操作数为
ints 并返回ints。所以是的short + short给出了int,short + int也给出了int。这是因为你的 c.p.u。要求它们为ints 才能执行任何算术运算,结果它们被强制转换为ints,执行该操作并将结果返回为int。 -
@AnirbanSarkar,该语言明确表示这是一项规则。该规则可能是基于硬件的,但实际上,该语言可以很容易地以不同方式定义它。
-
@AnirbanSarkar:严格来说这不是真的。 x86 直接支持 16 位或 8 位加法,无需扩展到整数。同样在仅支持 int 算术的硬件上,标准仍然可以指定
short+short == short、which is arguably a better design choice。