【发布时间】:2015-12-19 12:58:15
【问题描述】:
我正在使用 Lint 浏览一些旧的 C 代码,偶然发现了这一行:
int16_t max = -0;
Lint 消息是“常量表达式在操作 '-' 中的计算结果为 0”。
有人会使用-0有什么理由吗?
【问题讨论】:
-
如果目标架构有负的
0forint -
也许是波浪号
~不是减号-? -
~0在任何架构中都不会评估为零,AFAIK。 -
IEEE 浮点确实支持正零和负零。我不知道任何具有正零和负零的整数类型的架构。
-
@Peter:C 标准允许有符号整数的不同表示。符号/幅度就是这样的编码。不确定哪个标准 CPU 可能使用了它,但我想到了定制的 FPGA CPU 或 DSP。