Показать сообщение отдельно
Старый 11.07.2002, 21:12
Royan вне форума Посмотреть профиль Отправить личное сообщение для Royan Посетить домашнюю страницу Royan Найти все сообщения от Royan
  № 3  
Royan

Регистрация: Aug 2001
Адрес: С-Петербург
Сообщений: 94
Вот тут CyberMax утверждает, что трансляционный код flesh'a не проводит ни какой оптимизации с чем я не соглашусь. Ради примера можно рассмтреть AS приведенный во втором и третьем пунктах (повторю его здесь)


for (N=i=1; N*=i,++i<=10; ) {
}
var N=i=1;
while (N*=i,++i<=10) {
}
И теперь можно посмотреть как именно раскрывают сей код всякие там ASV
N = (i = 1);
(N = N * i);
while (++i <= 10) {
}
var N = (i = 1);
(N = N * i);
while (++i <= 10) {
}
Сразу замечу, что если написать в Flash 5,0,0,0 (я его качал почти сразу как он вышел) то такая вот конструкция цикла for: "for (N=i=1; N*=i,++i<=10; );" при перчлючении из режима expert в normal у меня вызывала критическую ошибку. В MX все было исправлено. Впрочем кому интересно тот может набрать собственный код, состоящий из каких угодно циклов for и убедиться, что любой сканер при разборе все переворачиват в while

И последняя ремарка, которую Sukoff не пояснил с точки зрения программирования на "С" подобных язяках

Цитата:
причём для вычисления ЗНАЧЕНИЯ Expression берётся ПОСЛЕДНЕЕ
дело в том, что символ запятая тоже является оператором и если мы запишим
a=0,1,2,3,4,5,6,7,8,9
то a==9
и соответственно, в приведенном Sukoff'ым примере допущена неточность
a=(b=1+1,2+2)

где a==4 и b==4 тоже!
__________________
God gives us relatives; thank God we can choose our friends.