Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是C++;对应于AS3编号的数据类型(整数)_C++_Actionscript 3 - Fatal编程技术网

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

C++ 什么是C++;对应于AS3编号的数据类型(整数),c++,actionscript-3,C++,Actionscript 3,那么,我所看到的数据类型是什么呢。我知道AS3的数字是64位的,但它是双精度的。我把代码转换成C++,因为在AS3中,这样做是有效的: var i:Number = 123; i >> 3; // Yeah shift right a double precision datatype 在C++中,我现在需要一个数据类型,它是AS3中的数字类型的整数范围(这是双精度)。请注意,我正在转换和编码/解码之前与AS3代码一起使用的函数,因此我必须有相同的结果 预先感谢。 基本上,AS3号

那么,我所看到的数据类型是什么呢。我知道AS3的数字是64位的,但它是双精度的。我把代码转换成C++,因为在AS3中,这样做是有效的:

var i:Number = 123;
i >> 3; // Yeah shift right a double precision datatype
在C++中,我现在需要一个数据类型,它是AS3中的数字类型的整数范围(这是双精度)。请注意,我正在转换和编码/解码之前与AS3代码一起使用的函数,因此我必须有相同的结果


预先感谢。

基本上,AS3号是双精度数,所以在C++中,它将是代码>双< /代码>类型。但是,AS3中的位移位是通过隐式转换完成的。您应该检查结果实际上是int还是double,如果是int,则检查结果

i=floor(i/8.0);
如果是double,则放弃floor()调用


简言之,您必须显式重写在int而不是double上执行的操作。但是,当一个操作需要一个int,并且i是double时,可以像
(int)i
那样执行操作。

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;
}
#包括
int main(int argc,字符**argv){
双i(91.5);
INTV(静态(i)>>3);

std::你能说双精度吗,但你在标题中说整数。到底是什么?整数类型没有精度,它们只是有一个大小以及它是否有符号。对不起,我觉得我很困惑。我将尝试重新定义一点。重点是在AS3中,你可以对数字数据类型(双精度类型)进行位运算但是,C++中不能使用同一个。所以我需要在C++中找到一个数据类型,在这个数据中,我可以执行按位运算(所以它必须是我知道的整数),并且仍然具有与数字相同的范围(我猜想在昏迷之后的东西)。。那么一个数字所能容纳的最大整数值是多少?当你对一个浮点数应用位运算时,AS3会做什么?@cdhowie:这将是我的问题。我假设他们只对尾数应用它们;这是唯一有意义的事情。我目前尝试实现的宏是#define D2I(X)(基本上我需要把它改为#define D2I(X)(是的,你的宏应该足够了。我会优先选择C++风格的强制转换和内联函数而不是宏:内联u int32 D2I(const double&v){返回静态的强制转换(v)}