我有两个功能:
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
答案 0 :(得分:1)
gdb:源文件是最新的可执行文件
以为我重新编译了,但显然没有。希望警告更加突出。
我的上一次修订版没有调用f()
。
答案 1 :(得分:0)
你是if
语句在任何循环中吗?
来自cppreference:
使封闭的剩余部分为,range-for,while或 do-while循环体被跳过。当它处于尴尬状态时使用 使用条件语句忽略循环的剩余部分。