关于条件C++如何执行的简单查询

Simple inquiry about how conditionals are executed C++

本文关键字:执行 简单 查询 何执行 C++ 于条件 条件      更新时间:2023-10-16

简单的是或否问题:

我有一段代码,就像

while (_attributeChars.find_first_of(*it++) != std::string::npos)

我想知道it是否仍然会增加when _attributeChars.find_first_of(*it) != std::string::npos false.也就是说,即使在while循环的最后一次评估中,它也会增加?

为了让你的程序知道它应该继续还是停止循环,它必须计算里面的表达式,这意味着在这种情况下*it++将始终被执行。

您应该注意的另一件事与您的问题有关,是 ++xx++之间的区别 .第一种形式返回 x 的新值,而第二种形式返回旧值。

您可以在此处了解更多信息:http://www.embedded.com/design/programming-languages-and-tools/4410601/Pre-increment-or-post-increment-in-C-C-

是的,在计算此条件时,it将始终递增,因为每次都必须计算表达式it++。 如果评估具有副作用的表达式,则会观察到这些副作用。


在某些情况下,它不会,但这只是在使用短路布尔运算符时,您在这里没有使用。 例如:

while (something() && it++)

在这种情况下,如果something()计算为 false,则it不会递增,因为如果正确的操作数与结果无关,&&运算符会短路。||?:操作员也会短路。

  • a && b:当a为假时,不计算b
  • a || b:当a为真时,不计算b
  • a ? b : c:如果a为真,则仅计算b,否则仅计算c

如果未计算表达式,则不会执行其具有的任何副作用(例如递增/递减或函数调用(。