23 ноября 2011

Что выбрать? Number, int, uint


В actionscript представлены три основных типа числовых значений. Самое интересное, что многие флешеры не совсем понимают разницу между ними:



Number - число с плавающей точкой, с размером в 64 бита, на целую часть может приходиться до 53 бит;
int - 32-разрядное целое число со знаком (значения -2147483648 (-2 в степени 31) до 2147483647 (2 в степени 31 -1));
uint - 32-разрядное число без знака (значения 0 до 4294967295 (2 в степени 32 - 1));

При инициализации int и uint значение переменной равно 0. То есть можно писать так:

int x;

вместо:

int x = 0;

а вот Number при инициализации дает только null.

Для счетчиков или каких то целых действий лучше использовать uint или int, это будет сокращать расход памяти в два раза.

Так же если переменная будет иметь тип int все ее значения будут целочисленными, даже после такого:

int/*uint*/ x = 1/2;

Но будьте осторожны с использованием uint в счетчиках, он не может быть меньше 0:

uint x;
while( x >= 0)
{
x--;
} //этот цикл никогда не завершится;


Также почему то принять для хранения цветов с альфа каналом (0xFFFFFFFF) использоваться Number, потому что не хватает значений у int, но зато у uint вполне хватает диапазона, для таких чисел.

2 комментария:

  1. Выбор влияет ещё и на быстродействие.
    Вот хорошая статья:
    http://gskinner.com/blog/archives/2006/06/types_in_as3_in.html
    В двух словах – гуру рекомендует использование int свести к минимуму, а про uint вообще забыть.

    ОтветитьУдалить
  2. Это статья от 2006 года, не уверен, что она объективна на сегодняшний день, я руководствовался в написании доками adoba и его инструкцией по оптимизации. Хотя зная adobe не уверен, что и она актуальна. Мой пост говорит об аналогах того что есть, выбор остается за каждым свой. Но народ должен знать!

    ОтветитьУдалить

Поделиться своими мыслями...