我正在用 C/++ 编写算法,当我使用打印语句(非常专业,我知道)进行调试时,我看到了一个奇怪的值:-0
。这与常规 0 的含义相同还是会导致错误?如果是这样,我该如何修复这些错误?
最佳答案
在这两种语言中,-0
是 int
常量/文字 0
的一元否定。
如果你的 int
是 2 的补码(最有可能在 C 中,并且必须来自 C++20),那么它与 0
完全相同,并且没有理智格式化程序会为 0
打印 -0
。
如果您的 int
是 1 的补码或带符号的大小,则 -0
是一个带符号的负零。它将在数值上与 0 进行比较,但其位模式将不同。
您可以通过加零将带符号的负零转换为零!
最有可能的是,您的 print 语句正在输出一个略微负的浮点值,您的格式正在向零四舍五入,因此您真的没有什么可担心的。
关于c++ - -0 在 C 和 C++ 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64196626/