我正在使用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/