gamsn:目前发现了一个优先级的BUG,需要如下修改:
1.修改运算符opt2的三个初始化值:opt2[1]='/';opt2[2]='*';opt2[3]='%';
这样改是使除法优先级高于乘法和取模运算,从而符合平时的习惯。
2.将calculation.cpp中的第275、276行改为:
if(ch=='-' && k>0 && IsDigital(strExp->Mid(k+1,1)) ) k++;
else break;
这样改是修正提取表达式时的一个BUG。
3.将calculation.cpp中的第279行删去:即删去如下行:
if(k==pos) k=strExp->GetLength();
4.将calculation.cpp中的第255行改为:int pos=strExp->Find(opt2[i]);
即将 int pos=strExp->ReverseFind(opt2[i]);
改为 int pos=strExp->Find(opt2[i]);
这样改使计算优先级为从左到右以符合平时计算习惯。
(发表于2005-11-12 13:25:00)
gamsn:由于2005-12-20更新的代码已经重写了MultiE(CString *strExp)函数的部分代码,所以就用不着改了。
(发表于2005-12-21 14:28:00)
..........................................................................
--------------------next---------------------
阅读(291) | 评论(0) | 转发(0) |