#12003/5/14 15:27:12
下面这段程序,是在flash中比较运算符(目前只有“+-*/()#”七种)之间的优先级,其中大于关系用“1”表示,等于用“0”,小于用“-1”
可是在运行的时候,循环只执行一次。真是想不透,望大家指点迷津
gx_q1q2 = new Array( "++", "+-", "+*", "+/", "+(", "+)", "+#",
"-+", "--", "-*", "-/", "-(", "-)", "-#",
"*+", "*-", "**", "*/", "*(", "*)", "*#",
"/+", "/-", "/*", "//", "/(", "/)", "/#",
"(+", "(-", "(*", "(/", "((", "()", "(#",
")+", ")-", ")*", ")/", ")(", "))", ")#",
"#+", "#-", "#*", "#/", "#(", "#)", "##");
//关系表达式中“1”表示“>”,“-1”表示"<",“0”表示“=”,
//空表示不会出现这种关系,所以没有值,如")("
gx_gx = new Array("1", "1", "-1", "-1", "-1", "1", "1",
"1", "1", "-1", "-1", "-1","1", "1",
"1", "1", "1", "1", "-1","1", "1",
"1", "1", "1", "1", "-1","1", "1",
"-1", "-1", "-1", "-1", "-1", "0", "",
"1", "1", "1", "1", "", "1", "1",
"-1", "-1", "-1", "-1", "-1", "", "0");
function q1q2(q2) {
var q1 = "#";
var qq = q1+q2;
var a = 1;
while (a<=48) {
//48为数组gx_gq1q2的长度-1
if (qq == gx_q1q2[a]) {
break;
} else {
a = a+1;
}
var zz = gx_gx[a];
return zz;
}
}
q2 = "#";
x = q1q2(q2);
trace(x);