如果condition返回true,则函数内部,但不进入body

时间:2013-11-14 22:06:01

标签: c++ if-statement gdb

我有两个功能:

bool f() const
int g() const

有问题的if语句位于while循环中,如下所示:

while(/*get next element*/){
  if ( f() || g() == 5 ) continue;
  // Do some stuff...
}

gdb告诉我f()返回TRUE;但是,continue没有被执行。该程序在循环体中进一步“做一些事情”。

这是什么问题? gdb对我说谎了吗?

解决方案:我的代码的上一版本未在if语句中包含对f()的调用。我忘了重新编译,所以消息来源让我相信电话就在那里,但事实并非如此。 https://stackoverflow.com/a/19989652/1566525

2 个答案:

答案 0 :(得分:1)

  

gdb:源文件是最新的可执行文件

以为我重新编译了,但显然没有。希望警告更加突出。

我的上一次修订版没有调用f()

答案 1 :(得分:0)

你是if语句在任何循环中吗?

来自cppreference:

  

使封闭的剩余部分为,range-for,while或   do-while循环体被跳过。当它处于尴尬状态时使用   使用条件语句忽略循环的剩余部分。