对应于 AS3 编号(整数)的C++数据类型是什么?

What is the C++ datatype that corresponds to AS3 Number (Integral)

本文关键字:C++ 数据类型 是什么 整数 AS3 编号      更新时间:2023-10-16

那么我正在查看的数据类型是什么。我知道 AS3 编号是 64 位,但它是双精度。我正在将代码转换为C++,因为在 AS3 中这样做是有效的:

var i:Number = 123;
i >> 3; // Yeah shift right a double precision datatype

因此,在C++我现在需要一个数据类型,该数据类型在 AS3 中数字类型的整数范围内(即双精度)。请注意,我正在转换和编码/解码以前与 AS3 代码一起使用的函数,因此我必须获得相同的结果。

提前谢谢。

AS3 移位运算符将要移位的表达式和移位量转换为 32 位整数。在 C++ 中,您可以通过将双精度数据类型强制转换为 int 并移位来模拟此行为:

#include <iostream>
int main(int argc, char **argv) {
    double i(91.5);
    int v(static_cast<int>(i) >> 3);
    std::cout << "v = " << v << std::endl; // outputs "v = 11"
    return 0;
}

基本上,在 AS3 中,数字是一个双精度数字,因此在C++中它将是double类型。但是,AS3 中的位移是通过隐式转换完成的。您应该检查结果实际上是 int 还是双精度,如果是 int,则检查

i=floor(i/8.0);

如果双倍,则删除 floor() 调用。

简而言之,您必须显式重写在整数而不是双精度上完成的操作。但是,当操作需要 int 并且 i 是双精度时,您可以像(int)i一样做。