浮动值评估完全不正确

Gri*_*ess 0 c logic objective-c

嘿互联网.我在C中有一个非常奇怪的问题.我导出一个浮点值,然后检查它是否大于0.但是,即使该值小于零,比较总是评估为true.这是代码:

if (sVel > 0.0f)
{
    sVel += 1.0f;
    sVel -= 1.0f;
    NSLog(@"SEP VEL: %1.6f", sVel);
    return;
}
Run Code Online (Sandbox Code Playgroud)

因此,将sVel设置为100会按预期打印日志并点击return语句; 凉.然而,sVel设置为-100并不能打印日志仍然碰到return语句.我完全糊涂了,我不知道从哪里开始跟踪这个......

hop*_*pia 6

看起来您正在使用调试器跟踪代码.大多数编译器可能会优化代码并执行相同的return语句.然后,无论sVel的初始值如何,您都会跳转到返回码.

真正的证据是print语句.由于未打印日志,这意味着正确评估了sVel.尝试将日志放在if块之外,看看它何时显示.