C标准最不可靠的地方,是strtod的错误检测
原创
我写过一段代码,把用户输入转成浮点数,编译通过,本地测试全绿。换台机器跑,行为就不对了。
根源在C标准库的strtod()。这个从字符串解析浮点数的函数,错误检测的边界行为在不同平台上并不一致——同一个输入,有的实现报错,有的不报,还有的甚至静默吞掉异常值。标准规范没有把这类情况完全钉死,留给实现者太多裁量空间。
说到底,这不是一个打补丁能解决的问题。它暴露的是C标准在"可移植"承诺上的一贯裂缝:规范留白的地方,正是bug滋生的地方。
原文:String-to-Float Conversion Error Checking in Standard C Is Not Portable · 来源:Hacker News
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




