首页 > 解决方案 > -0 在 C 和 C++ 中是什么意思?

问题描述

我正在用 C/++ 编写算法,当我使用 print 语句(我知道非常专业)进行调试时,我看到了一个奇怪的值:-0. 这是否意味着与常规 0 相同的事情,或者这会导致错误吗?如果是这样,我该如何修复这些错误?

标签: c++c

解决方案


在这两种语言中都是常量/文字-0的一元否定。int0

如果您int是 2 的补码(最有可能在 C 中,并且必须来自 C++20),那么它与 完全相同0,并且没有任何理智的格式化程序会-00.

如果您int是 1 的补码或有符号幅度,-0则为有符号负零。它将在数值上比较等于 0,但其位模式不同。

您可以通过添加零将带符号的负零转换为零!

最有可能的是,您的打印语句正在输出一个略微负的浮点值,您的格式正在向零舍入,因此您无需担心。


推荐阅读