![]() |
Вычисления и приведение численных типов в AS3
Сразу прошу прозения, юзал поиск, может плохо искал, но ничего вразумтиельного не нашёл.
В своём проекте очень много имею дело с математикой. В большинстве выражений присутствуют int'ы и Number'ы. И мне стало не совсем понятно, в каком порядке и как именно работают преобразования численных типов в AS3. Я сделал пару тестов: Код:
var a:int = 2;Код:
var a:int = 2;Код:
var a:int = 2;Помогите плиз инфой, ссылками, или чем нибудь. Я хотел иметь абсолютно точную и полную схему этого процесса. Чтобы не осталось вопросов. |
Тут не надо заморачиваться. Просто нужно логически размышлять.
В 1м случае по скольку c целое число - берется его целая часть - это 0. Во 2м все понятно, как и должно быть. В 3м берётся потолок из 0.6 - это 1 (кстати типа Number), который отлично (в данном случае автоматически) преобразуется в int и выводится тебе. Что тут может быть неясно? Я бы на твоем месте больше волновался про приведение к другого рода типам. Например помнить, что: Код:
var c:int = Math.ceil(a/b); |
Неясно например вот что. если у меня длиннющая формула, где есть куча слагаемый и множителей с типами как int так и Number. Всё это в итоге приравнивается скажем к инту. как будут происходить приведения? На каждой стадии вычисления длинного выражения, или всё вычислится так, будто там стоят Number, а только потом отбросится дробная часть?
Хотелось бы знать абсолюнто точную схему, точно такую же, как существует скажем для C++, где есть целый надор документировынных правил. Каждый конкретный пример я могу протестить, или как то интуитивно догадаться. Но всё же хотелось бы иметь точную картину, а не нечто созданное на основе тестов. update: спасибо, уже разобрался. Любое численное выражение вычисляется как Number, независмо от того, какой тип (целый, или двещественный) входящих в выражение элементов имеется. То есть для себя можно считать, что все составные части выражения идут как Number. Конечный результат приводится к тому типу, который требует контекст. Будь то lefthanded переменная, или подстановка в функцию в качестве аргумента. |
Всё предельно просто.
Код:
a = b; |
В большой строке все int будут заменены на Number, когда появляется необходимость. Обратно же только после присвоения переменной с типом int или после функции преобразования int()
|
Опреации с целыми числами - они и есть операции с целыми числами, т.е. вас не удивляет, что
Код:
var a:Number = 3; |
| Часовой пояс GMT +4, время: 07:19. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.