gpt4 book ai didi

c++ - 'Natural Size' 在 C++ 中的真正含义是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:13 25 4
gpt4 key购买 nike

我知道“自然大小”是指特定硬件处理效率最高的整数宽度。在数组或算术运算中使用 short 时,必须先将 short 整数转换为 int

问:究竟什么决定了这个“自然大小”?

我不是在寻找简单的答案,例如

If it has a 32-bit architecture, it's natural size is 32-bit

我想了解为什么这是最有效的,以及为什么一个 必须在对其进行算术运算之前进行转换。

奖励问题:对 long 整数进行算术运算时会发生什么情况?

最佳答案

一般来说,每个计算机体系结构的设计都使得特定类型大小提供最有效的数字运算。具体大小则取决于体系结构,编译器将选择合适的大小。关于硬件设计人员为何为特定硬件选择特定尺寸的更详细解释超出了 stckoverflow 的范围。

short 大多数情况下在执行积分运算之前会被提升为 int,因为它在 C 中就是这样,而 C++ 继承了这种行为,很少或根本没有理由改变它,可能会破坏现有代码。我不确定它最初是在 C 中添加的原因,但可以推测它与“默认 int”相关,如果未指定类型,编译器会假定 int

奖励 A:从 5/9(表达式)我们了解到:许多期望算术或枚举类型操作数的二元运算符以类似的方式导致转换和产生结果类型。目的是产生一个通用类型,这也是结果的类型。这种模式称为通常的算术转换,定义如下:

然后是特别感兴趣的:

  • 此处无关紧要的 float 规则
  • 否则,应对两个操作数执行整数提升 (4.5)
  • 然后,如果其中一个操作数是 unsigned long,则另一个应转换为 unsigned long。
  • 否则,如果一个操作数是 long int 而另一个是 unsigned int,那么如果 long int 可以表示
    unsigned int 的所有值,unsigned int 应转换为 long int;
    否则两个操作数都应转换为 unsigned long int。
  • 否则,如果其中一个操作数为 long,则另一个应转换为 long。

总而言之,编译器会尝试使用它可以执行二进制操作的“最佳”类型,int 是使用的最小大小。

关于c++ - 'Natural Size' 在 C++ 中的真正含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370732/

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