【发布时间】:2011-11-05 14:21:06
【问题描述】:
我有这个代码...
void drawMap(void)
{
if (false)
return;
for(auto iter = this->m_layers.begin(); iter != m_layers.end(); ++iter)
{
if ((*iter)->get() == NULL)
continue;
PN::draw((*iter)->get(), b2Vec2(0,0), true, 0);
}
}
如果我没记错的话,它永远不应该执行......但它确实......当我改变时
if (false)
return;
到
if (false)
return;
else
return;
它现在根本不执行,但是第一个语句怎么可能不是假的呢? 服用头痛药
附:我这样做只是因为我在调试时注意到我的代码在不应该的情况下绘制到屏幕上。
【问题讨论】:
-
你的代码中真的有
if (false),或者你认为是if (false)的其他东西? -
嗯???
if语句将始终失败,因此其块内的return将永远不会执行。任何体面的编译器都会删除整个东西。 -
如果问题是你在不应该画的时候画了,那么你的问题是倒退的。您希望
return执行,但它不执行,因为条件为假。 -
你确定你没有一个
#define来改变“假”的意思吗? -
这就是为什么我更喜欢几乎总是使用
if (...) {...} else {...}即使是提前返回的分支。这有助于我更好地可视化流程。假设“从不执行”指的是“返回”,因为这个问题似乎有点混乱。
标签: c++ if-statement return execute