我将如何修改运算符“&&”和“||”的定义让他们不使用短路评估?

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 相同。

您要做的是在操作任一值之前评估这两个表达式。

【讨论】:

以上是关于我将如何修改运算符“&&”和“||”的定义让他们不使用短路评估?的主要内容,如果未能解决你的问题,请参考以下文章

C ++我如何覆盖类中的 << 运算符

PHP & MySQL数据库专题 第五课 数据查询

PHP & MySQL数据库专题 第五课 数据查询

PySpark:when子句中的多个条件

如何利用模板复制&移动构造函数和赋值运算符?

将右值与 & 运算符一起使用