关于条件C++如何执行的简单查询
Simple inquiry about how conditionals are executed C++
简单的是或否问题:
我有一段代码,就像
while (_attributeChars.find_first_of(*it++) != std::string::npos)
我想知道it
是否仍然会增加when _attributeChars.find_first_of(*it) != std::string::npos
false
.也就是说,即使在while
循环的最后一次评估中,它也会增加?
为了让你的程序知道它应该继续还是停止循环,它必须计算里面的表达式,这意味着在这种情况下*it++
将始终被执行。
您应该注意的另一件事与您的问题有关,是 ++x
和x++
之间的区别 .第一种形式返回 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
。
如果未计算表达式,则不会执行其具有的任何副作用(例如递增/递减或函数调用(。
相关文章:
- 简单C++"Hello World"程序的执行时间长
- 来自简单循环的 OpenAcc 错误:内核执行期间的非法地址
- 如何直接在安卓设备上作为可执行文件运行简单的 c++ 程序?
- 从命令提示符使用 MSBuild 调试简单的C++可执行文件
- 如何在特征中对二维数组的列执行简单的算术运算
- 无法与exe一起执行简单的Shell Script/Commonads
- 使用 QT 创建器通过树莓派上的 Wifi 执行简单的终端命令
- 优化一个简单的方程式,用于C 中的执行速度
- Q无法执行简单的控制台程序
- 在垫子矩阵上执行简单的逆和乘法操作
- 在Windows上编译器/执行汇编程序的最简单方法
- 如何使用 CreateProcess 执行简单的命令行
- 无法使用WSO2(Axis2c)执行简单的SOAP操作
- "No such file or directory" 使用 makefile 时在 c++ 中执行简单 fstream 时出错
- 测量时间以执行简单的指令
- 在终止/非活动会话上执行简单查询需要几分钟时间
- 如何加载加载win32 dll和执行简单的winapi与firebreath
- 如何执行简单缩放到曼德布洛特集
- 无法使用opencv执行简单程序,错误"Can't find the entry point of the procedure"
- 是一个std::vector查找,比执行简单操作要快