Actionscript 3 — Что такое тип данных C ++, который соответствует номеру AS3 (Integral)

Итак, какой будет тип данных, на который я смотрю. Я знаю, что AS3 Number является 64-битным, но это двойная точность. Я конвертирую код в C ++, и так как в AS3 это действительно так:

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

Поэтому в C ++ мне нужен теперь тип данных, который находится в целочисленном диапазоне типа Number в AS3 (с двойной точностью). Обратите внимание, что я конвертирую и кодирую / декодирую функции, которые ранее использовались с кодом AS3, поэтому у меня должен быть тот же результат.

Заранее спасибо.

3

Решение

Оператор сдвига 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;
}
1

Другие решения

По сути, в AS3 число является числом с двойной точностью, поэтому в C ++ это будет double тип. Но сдвиги битов в AS3 осуществляются посредством неявного преобразования. Вы должны проверить, является ли результат на самом деле int или double, и если int, вы делаете

i=floor(i/8.0);

и если удвоить, вы бросаете вызов floor ().

Короче говоря, вы должны явно переписать операции, которые выполняются с целыми числами, а не с двойными. Но вы можете сделать как (int)i когда операция требует int, и я удваивается.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector