检查C+中单行表达式执行顺序的一种方法+;通过调试 P>是否有一种方法来检查一行表达式的执行顺序,其中包含C++中的几个小子表达式,在调试程序的帮助下?
例如:检查C+中单行表达式执行顺序的一种方法+;通过调试 P>是否有一种方法来检查一行表达式的执行顺序,其中包含C++中的几个小子表达式,在调试程序的帮助下?,c++,C++,例如: 如果(a!=6 | | b!=5) 我能找出先执行的是什么吗a=6或b=5通过观察调试器的操作,如果所有子表达式都在一行代码中,我该怎么做 提前感谢。如Richard Criten所述,您可以使用在线编译器资源管理器。例如,Godbolt可以为您提供以下信息: 所以你可以看到a!=6首先被选中,并且b!=仅当第一个条件失败时,才会选中5。=?我想你的意思是=
如果(a!=6 | | b!=5)
我能找出先执行的是什么吗a=6
或b=5
通过观察调试器的操作,如果所有子表达式都在一行代码中,我该怎么做
提前感谢。如Richard Criten所述,您可以使用在线编译器资源管理器。例如,Godbolt可以为您提供以下信息:
所以你可以看到
a!=6
首先被选中,并且b!=仅当第一个条件失败时,才会选中5。=代码>?我想你的意思是=你的意思是=代码>非=代码>2)a!=6
先到,b!=5执行时排在第二位。这里没有6 | | b
表达式。非优化构建的执行顺序定义得很好,但优化后可能会发生剧烈变化。尝试调试优化的构建可能会令人沮丧。我建议您在IDE中或使用一个在线编译器探索器检查优化构建的生成汇编程序。请注意,编译器可能已经完全优化了您对变量(甚至整个表达式)的看法。在这种情况下,请检查运算符优先级规则。它们非常明确。添加-O2
并检查生成的代码。这是一个全新的世界。@RichardCriten可能是一个更好的例子,即使是在更高的-O