【问题标题】:Is there always the same execution sequence for various conditions in a If Statement in C++ for all compilers? [duplicate]对于所有编译器,C++ 中的 If 语句中的各种条件是否总是有相同的执行顺序? [复制]
【发布时间】:2020-06-25 22:42:57
【问题描述】:

让我们假设一个带有两个条件 A 和 B 的简单 If 语句:

If ( condA && condB) 

所有编译器的序列都相同吗?

  1. 条件 A
  2. 条件 B

如果条件 A 已经为假,那么条件 B 的执行是否是可选的?

【问题讨论】:

  • 不是可选的——如果 A 为假,那么 B 肯定不会被执行

标签: c++ if-statement multiple-conditions


【解决方案1】:

是的。如果 A 为假,则不评估条件 B 称为短路逻辑,这种行为由语言规范保证。

【讨论】:

  • 必须添加“仅适用于内置运算符”。如果重新定义运算符,则不会发生短路,并且可以根据我们谈论的标准定义或不定义评估顺序。最新标准定义了函数参数评估的顺序,早期的没有。
猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 2020-01-15
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2015-07-08
  • 2011-10-17
  • 1970-01-01
相关资源
最近更新 更多