嘿互联网。我在C中有一个非常奇怪的问题。我导出一个浮点值,然后检查它是否大于0.但是,即使该值小于零,比较总是评估为true。这是代码:
if (sVel > 0.0f)
{
sVel += 1.0f;
sVel -= 1.0f;
NSLog(@"SEP VEL: %1.6f", sVel);
return;
}
因此,将sVel设置为100会按预期打印日志并点击return语句;凉。但是,将sVel设置为-100会不打印日志并仍然会返回return语句。我完全糊涂了,我不知道从哪里开始跟踪这个......
答案 0 :(得分:6)
看起来您正在使用调试器跟踪代码。大多数编译器可能会优化代码并执行相同的return语句。然后,无论sVel的初始值如何,您都会跳转到返回码。
真正的证据是print语句。由于未打印日志,这意味着正确评估了sVel。尝试将一个日志放在if块之外,看看它何时显示。
答案 1 :(得分:0)
但是,将sVel设置为-100不会 打印日志,仍然打 退货声明。
什么回报声明?如果sVel为负数,则不应执行任何操作。在坠落之后会发生什么?你确定它不会从函数返回吗?