Вот тут 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 тоже!