大佬教程收集整理的这篇文章主要介绍了delphi – 三重平等表达式评估,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
x := 1; y := 1; z := 1; ASSERT( (x = -1) = (y = -1) = (z = -1) );
我经常写这种检查,但两个变量.令人惊讶的是,三重比较也被编译,但它没有按预期工作.对于(1,1,1)值,我希望它评估为真.在替换变量值和简化之后,我们得到:
ASSERT( false = false = false );
我认为它应该评估为True,但事实并非如此.那么三重比较如何评估?
当编译器看到多个链接的运算符时,需要使用所谓的“运算符优先级”将它们分组.很清楚你是否考虑过我们在小学学到的基本算术运算符.毫无疑问:3 2 * 4评估为:它相当于3(2 * 4).如有疑问,请始终自行添加分组.如果你这样做,你会发现你的表达式相当于:
((false = falsE)= falsE),很明显它评估为:
(真=假).
你可能想要的是使用AND运算符并将你的初始Assert分组如下:
ASSERT(((x = -1)=(y = -1))和((y = -1)=(z = -1)))
那么我可能要么在多行上写这个表达式以使AND运算符显而易见(SQL习惯,我知道),或者完全重写它:
Assert ( ((x = -1) = (y = -1)) and ((x = -1) = (z = -1)) );
或这个变种:
Assert ( ((x = -1) and (y = -1) and (z = -1)) or ((x <> -1) and (y <> -1) and (z <> -1)) );
我的规则是:如果需要超过1秒才能确定运算符的优先级,请添加括号.
以上是大佬教程为你收集整理的delphi – 三重平等表达式评估全部内容,希望文章能够帮你解决delphi – 三重平等表达式评估所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。