我正在使用Lint进行一些旧的C代码,偶然发现了这一行:

int16_t max = -0;

Lint消息是“常量表达式在操作'-'中的值为0”。

有人使用-0有什么理由吗?

最佳答案

不,我看不到任何原因。其他人提到有可能具有“负零”的平台,但是这种负零永远不能由该表达式产生,因此这是没有用的。

C标准中的相应段落是6.2.6.2 p3,重点是我的:



例如,要在这样的平台上产生负零,可以使用~INT_MAX,但对于其他表示形式则不能为零,因此该代码不是很容易移植。

关于c - 有什么理由要分配-0吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32718723/

10-15 01:05