c - 浮点值评估完全不正确

标签 c objective-c logic

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

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

因此,将 sVel 设置为 100 会按预期打印日志并命中 return 语句;凉爽的。但是,将 sVel 设置为 -100 不会打印日志并且仍然命中返回语句。我非常困惑,我不确定从哪里开始追踪这个……

最佳答案

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

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

关于c - 浮点值评估完全不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498173/

相关文章:

C - 以文本作为参数

ios - UIScrollView 的内容在导航栏下方有偏移

c# - 如何检查数字字符串是否在运行序列中

java - boolean 逻辑模拟器 - StackOverflowError

c - C 中类型数组的堆栈占用空间

无法正确打印社交号码

ios - coredata 中一列所有值的总和

java - 如何搜索分成两行的单词?

c - 初始化线程局部变量

objective-c - iOS - 向 CakePHP REST 发出 POST 请求