如果出现错误,我有一个可以返回nan或inf的数值方法,并且为了测试目的,我想暂时强制它返回nan或inf以确保正确处理情况.是否有一种可靠的,独立于编译器的方法来在C中创建nan和inf的值?
谷歌搜索大约10分钟后,我只能找到编译器相关的解决方案.
可能重复:
C中的NaN Literal?
我在ANSI C中编写一个函数,它接收两个数字作为参数.参数是int或float类型.根据我的过滤器,该数字可能有效,也可能无效.如何返回某些值意味着失败?返回类型是float.我想到的第一件事就是NaN抽象类型.但我不知道如何用ANSI C表示它.
(抱歉我的英语不好.英语不是我的母语)
从昨天对某些问题的回答中,我了解到写入一个联盟成员并从另一个不同类型的成员中读取值是不可移植和不安全的,假设成员的基础对齐.所以在经过一些研究之后,我发现了一个重复这个主张的书面来源并指定了一个流行的例子 - 使用int和float的并集来查找float的二进制表示.
因此,我想知道这个假设是不安全的,我想 - 除了节省记忆(呃......)对工会有什么实际用途?
注意:即,在标准C下.显然,对于特定实现,规则是事先已知的并且可以被利用.
编辑:"不安全"这个词,由于近年来的联想,可能是一个不好的措辞选择,但我认为意图明确.
编辑2:由于这一点在答案中重复 - 节省内存是一个有效的参数.我想知道是否还有其他的东西.