我将如何修改运算符“&&”和“||”的定义让他们不使用短路评估?
Posted
技术标签:
【中文标题】我将如何修改运算符“&&”和“||”的定义让他们不使用短路评估?【英文标题】:How would I modify the definition of the operators "&&" and "||" so that they do not use short circuit evaluation? 【发布时间】:2021-02-03 20:22:15 【问题描述】:如何修改运算符“&&”和“||”的定义让他们不使用短路评估?请显示新的语义规则。
我尝试了以下方法: "AND (&&):如果可以转换为假,则返回表达式#1 - 如果否则返回表达式#2。因此,当与布尔值一起使用时,如果两个操作数都可以转换为真,则返回真;否则,它返回假。 OR (||):如果它可以转换为真,则返回表达式#1 - 如果-否则,它返回表达式#2。因此,当与布尔值一起使用时,||如果任一操作数都可以转换为 true,则返回 true - 如果两者都可以转换为 false,则返回 false。 "
但是,显然,这仍在使用短路评估。
【问题讨论】:
【参考方案1】:短路求值意味着只要遇到 AND 的值为 false 和 OR 的值为 true 时立即停止。这是因为无论第二项是什么,整个表达式的值总是那个。
您的 AND 描述是错误的,因为如果表达式 #1 的计算结果为 false,则表达式 #2 根本不会被计算。与 OR 相同。
您要做的是在操作任一值之前评估这两个表达式。
【讨论】:
以上是关于我将如何修改运算符“&&”和“||”的定义让他们不使用短路评估?的主要内容,如果未能解决你的问题,请参考以下文章