讨论:判断函数返回值用 not 呢还是用 = false 呢?

24ge 2005-11-15 11:01:07
如果一个函数返回值为布尔型,如
function fun01:boolean;
begin
result := false;
...
result := true;
end;

那么在程序中如何判断fun01的返回值呢,下面两种那种好呢:

1: if not fun01 then xxx;
2: if fun01 = false then xxx;


我从前用第一种,运行的很好。后来忘了在哪里看到说:判断布尔变量用第一种,而函数返回值用第二种比较好。我也忘了具体什么原因。我便改成第二种。

我在一个项目中用了第二种半年多,也运行的很好。不过,最近“老大”调程序调不通,非说是我的程序有问题,固执的全让我改成第一种。妈呀,那么多怎么改哈?

所以特请教各位大虾,讨论一下到底哪种好呢,会不会出问题?
...全文
192 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondtkl 2005-11-16
  • 打赏
  • 举报
回复
是的 默认优化状态下
这样产生的ASM代码都是一样的。。。
都为

test al, al;

还是看个人习惯 = False 这样比较直观一些 但是感觉不够简练 呵呵。
24ge 2005-11-16
  • 打赏
  • 举报
回复
多谢各位讨论啦,看来还是第一种的多。

我在C++/C高质量编程指南中看到布尔型比较也是用第一种,但没有提及函数的返回值。

我实在想不起提倡第二种的文章在哪里了。真是郁闷。
wlbfeihu 2005-11-16
  • 打赏
  • 举报
回复
这问题没必要展开讨论吧,
ly_liuyang 2005-11-16
  • 打赏
  • 举报
回复
习惯了用IF NOT的
从来没用过=False这样的

本质其实都是一样的
zhangl_cn 2005-11-16
  • 打赏
  • 举报
回复
第一种
hooo 2005-11-16
  • 打赏
  • 举报
回复
混分来了..
我也是习惯用if not ,
老之 2005-11-15
  • 打赏
  • 举报
回复
看Delphi的一些源码很少用 if fun01=false then 这样来写的。
alphax 2005-11-15
  • 打赏
  • 举报
回复
最近“老大”调程序调不通,非说是我的程序有问题,固执的全让我改成第一种

服了,你的老大
xiaoyen 2005-11-15
  • 打赏
  • 举报
回复
if not fun01 then xxx; 比较专业一较。
Maple119 2005-11-15
  • 打赏
  • 举报
回复
Delphi的编译器作相同处理.不信你看看DCU的的汇编代码即明白.
amtyuranus 2005-11-15
  • 打赏
  • 举报
回复
直接覆盖啊!!

老大要你做敢不做!!

平常用两种都行啊
sanoul 2005-11-15
  • 打赏
  • 举报
回复
没有这样的标准吧,至于你"老大",你就权当他是"更年期"
FigoZhu 2005-11-15
  • 打赏
  • 举报
回复
应该和写法无关的。
k2222 2005-11-15
  • 打赏
  • 举报
回复
调不通的原因很多,要仔细看你的函数内有无涉及到公有变量。
应和这种写法无关。
beyondtkl 2005-11-15
  • 打赏
  • 举报
回复
俺习惯了 用C++ 都是 if (!...)

呵呵 其实都没什么了。。风格而已

不过俺是 强烈推荐用 NOT..
aiirii 2005-11-15
  • 打赏
  • 举报
回复
if not fun01 then xxx;
一般我这样用,但好像没很大区别
柯本 2005-11-15
  • 打赏
  • 举报
回复
我一般也用if not fun01 then xxx;
如果老大真的要你全改,建议用untra-edit,用它的正则表达式修改要比delphi本身要方便些
summersky204608 2005-11-15
  • 打赏
  • 举报
回复
一般的布尔类型用if not fun01 then xxx;
你们“老大”是一般人,你就谅解他吧:)
Excel函数应用大全.doc Excel函数应用教程 逻辑函数 所谓逻辑运算符也就是与、或、是、非、真、假等等条件判断符号。 1.AND   用途:所有参数的逻辑值为真时返回TRUE(真);只要有一个参数的逻辑值为假,则返回FALSE(假)。   语法:AND(logical1,logical2,…)。   参数:Logical1,logical2,…为待检验的1~30个逻辑表达式,它们的结论或为TRUE(真)或为FALSE(假)。参数必须是逻辑值或者包含逻辑值的数组或引用,如果数组或引用内含有文字或空白单元格,则忽略它的值。如果指定的单元格区域内包括非逻辑值,AND将返回错误值#value!。   实例:如果A1=2、A=6,那么公式“=AND(A1A2)”返回FALSE。如果B4=104,那么公式“=IF(AND(1   2.FALSE   用途:返回逻辑值FALSE。   语法:FALSE()   参数:该函数不需要参数   实例:如果在A1单元格内输入公式“=FALSE()”,回车后即可返回FALSE。若在单元格或公式中输入文字FALSE,Excel会自动将它解释成逻辑值FALSE。   3.IF   用途:执行逻辑判断,它可以根据逻辑表达式的真假,返回不同的结果,从而执行数值或公式的条件检测任务。   语法:IF(logical_test,value_if_true,value_if_false)。   参数:Logical_test计算结果为TRUE或FALSE的任何数值或表达式;value_if_true是Logical_test为TRUE时函数返回值,如果logical_test为TRUE并且省略了value_if_true,则返回TRUE。而且value_if_true可以是一个表达式;value_if_false是Logical_test为FALSE函数返回值。如果logical_test为FALSE并且省略value_if_false,则返回FALSE。value_if_false也可以是一个表达式。   实例:公式“=IF(C2>=85,"A",IF(C2>=70,"B",IF(C2>=60,"C",IF(C2<60,"D"))))”,其中第二个IF语句同时也是第一个IF语句的参数。同样,第三个IF语句是第二个IF语句的参数,以此类推。例如,若第一个逻辑判断表达式C2>=85成立,则D2单元格被赋值“A”;如果第一个逻辑判断表达式C2>=85不成立,则计算第二个IF语句“IF(C2>=70”;以此类推直至计算结束,该函数广泛用于需要进行逻辑判断的场合。   4.NOT   用途:求出一个逻辑值或逻辑表达式的相反值。如果您要确保一个逻辑值等于其相反值,就应该使用NOT函数

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧