C标准是否保证负浮点零在条件判断中恒为假?
关于C语言中
if(-0.0)的判定结果问题 核心结论
C标准明确保证if(-0.0)的判断结果恒为false;若某实现将其判定为true,属于实现缺陷。
依据分析
- C标准规定,
if(a)的语义完全等价于if(a != 0),这里的0是与a类型匹配的零值(对于double类型的-0.0,对应的就是0.0)。 - 对于浮点数的比较,C标准明确要求
0.0 == -0.0的结果为true,由此可推导出-0.0 != 0.0的结果必然为false。 - 这里的
!=是浮点数类型的不等运算符,必须遵循C标准中浮点数比较的规则,不存在“使用非浮点数比较”的例外情况。
内容的提问来源于stack exchange,提问作者cesss
相关产品推荐
相关产品推荐

