慎用IfThen函数!

         从java/C转过来的coder,也许认为 (a==b? fun1():fun2())这种模式在pascal/delphi也有替代函数ifthen觉得很开心。

         但事实上却大错特错,ifthen是一个函数而不是表达式或运算符,pascal/delphi的函数处理顺序从右到左的,也就是说先运算false的表达式再运算true的表达式,然后再判断条件!

        如下代码:

var spt,ept:TPoint;
w_step:Double;
begin
spt.X:=2;
spt.Y:=3;
ept.X:=2;
ept.Y:=6 ;
w_step:=ifthen(ept.x=spt.x,0, (ept.y-spt.y)/abs(ept.x-spt.x));
caption:=FloatToStr(w_step)
end;

        必然会报被零整除的错误。大家谨记啊!


你可能感兴趣的:(pascal)