Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588300
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:53:40

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) |
给主人留下些什么吧!~~