首页 > 后端开发 > C++ > 正文

C 语言是否能保证用户定义类型的短路评估?

Barbara Streisand
发布: 2024-11-10 17:40:04
原创
833 人浏览过

Is Short-Circuit Evaluation Guaranteed in C   for User-Defined Types?

C 语言中的短路求值:一个警示故事

在 Java 中,短路求值可确保逻辑运算符的正确操作数是仅当左操作数计算结果为 true 时才执行。此行为通过避免不必要的计算来实现高效的代码执行。

现在,让我们考虑 C 中的类似场景:

if (a != 0 && a->fun());
登录后复制

虽然此代码模拟了 Java 中所需的行为,但值得注意的是C 中不保证对用户定义类型的短路评估。这意味着即使 a 为 null,a->fun() 调用也可能被执行,从而导致未定义的行为。

这种差异背后的原因在于逻辑运算符 && 和 || 的重载性质。在 C .当应用于用户定义类型时,这些运算符可以由程序员自定义,可能会覆盖短路求值的默认行为。

因此,为了确保可移植性并避免不可预测的结果,强烈建议避免重载 && 和 ||自定义类型的运算符。然而,对于像 int 和 bool 这样的内置类型,短路评估是有保证的,允许您像在 Java 中一样在 C 中使用这种强大的优化技术。

以上是C 语言是否能保证用户定义类型的短路评估?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板