c++ - -0 在 C 和 C++ 中意味着什么?

标签 c++ c

我正在用 C/++ 编写算法,当我使用打印语句(非常专业,我知道)进行调试时,我看到了一个奇怪的值:-0。这与常规 0 的含义相同还是会导致错误?如果是这样,我该如何修复这些错误?

最佳答案

在这两种语言中,-0int 常量/文字 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/

相关文章:

c++ - 什么是模板扣除指南,我们应该在什么时候使用它们?

c - 在自定义 malloc 中附加调试 header

c - 使用正则表达式解析以分号分隔的字符串

c++ - C/C++ 转换函数与表达式不同?

c++ - 当基类不是多态但派生时 'this' 地址不匹配

c++ - 正则表达式中带有圆括号的正则表达式错误

c - 使用指针反转 C 中的字符串 - if 语句的目的?

javascript - 如何在 SQL 中保存 OFFSET 的当前状态

c++ - "Failed writing body"CURLOPT_WRITEDATA

c++ - vector (push_back); g++-O2;分段故障