gpt4 book ai didi

C++ int 限制的提升动机

转载 作者:行者123 更新时间:2023-12-04 11:33:22 25 4
gpt4 key购买 nike

整数提升的工作原理是将低等级的所有内容提升为 intuint 。但为什么会这样呢?
区分“升级”和“降级”类型是有意义的。当您将 short 转换为 char 时,您可能会丢失数据。
然而,当排名上升时 (bool -> char -> short -> int -> long -> long long) 没有机会丢失数据。如果我有 char 将它转换为 shortint 并不重要,我仍然不会丢失任何数据。
我的问题是为什么 int 仅从较低级别的类型升级到 int ?为什么会做出这样的决定?例如,为什么不转向下一个更高排名的类型(然后从那里继续,例如再次尝试推广)。
在我看来,当您尝试描述隐式转换语义时,它们似乎有点武断。 “大多数 int 类型都可以“升级”,这意味着转换不会丢失数据,但升级仅适用于 int ,而不仅仅是任何排名更高的类型。如果您将任何内容转换为 int 以外的其他内容,则称为转换”
使用 int 类型的实际排名来尝试一系列“促销”不是更简单吗?或者只是将任何向更高排名的转换称为“促销”?
附言这是一个教育问题,不是针对特定的编程问题,而是出于我自己的好奇心。

最佳答案

在 C 标准中,Section 6.3.1.8 describes "Usual arithmetic conversions." (在 C99 中添加,链接到 C11 草案)

Many operators that expect operands of arithmetic type cause conversions and yield result types in a similar way. The purpose is to determine a common real type for the operands and result.


C99 Rationale V5.10将其原因描述为:

Explicit license was added to perform calculations in a “wider” type than absolutely necessary, since this can sometimes produce smaller and faster code, not to mention the correct answer more often. Calculations can also be performed in a “narrower” type by the as if rule so long as the same end result is obtained. Explicit casting can always be used to obtain a value in a desired type.


根据基本原理,可以合理地推断出委员会认为这是捕获最多可能用途的最简单的解决方案。
从简单的角度来看,拥有逐级晋升系统将大大增加实现标准所需的细节。它还会在不同位大小的平台之间产生广泛的性能问题。寻求使用数据类型实现特定目标的程序员仍然通过类型的显式转换获得了灵活性。

关于C++ int 限制的提升动机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67675296/

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