我正在用C编写一个浮点计算器接口,该接口允许在运行时访问math.h中定义的数学函数。接口被实现为功能类似于strtold()的函数。它基于ASCII,并且应该像ASCII一样可移植,但是为了实现这一点,我需要以尽可能可移植的方式处理浮点数。我对将支持范围限制为IEEE-754浮点感到满意,但不确定如何处理IEEE-754定义的异常(上溢,下溢等)。首先,我很确定检查所有舍入模式下可用的异常的唯一方法是检查状态标志本身。为了做到这一点,我将需要fenv.h(在C99的附件F中定义),因此我想知道fenv.h在实践中的便携性。我也不太了解fenv。h应该工作;在我看来,状态标志是集中的,但是无论出于什么原因,我印象中每个浮点都有内置的标志。我也知道C99说在math.h中定义的函数可能会上溢和下溢,但我不明白如何检查这些异常。因此,总而言之,我正在寻找一个示例,该示例如何使用fenv.h检查由乘法引起的溢出,并说明如何正确地错误检查math.h中定义的函数。
如果我的问题看起来很不自然,请原谅我.这是我在这里的第一个问题.
我脑子里有一个简单的查询.Java语言已经使用C和C++实现.
我的问题是
在C语言中,使用与给定数据类型不同的修饰符时,未定义C的格式化行为.
int c=10;
printf("%f",c); // unspecified behaviour
Run Code Online (Sandbox Code Playgroud)
而在Java中,如果我们使用类似的概念来使用不同的格式说明符打印数字,我们得到一个IllegalFormatConversionExceptoion.
例外细节: -
线程"main"中的异常java.util.IllegalFormatConversionException:f!= java.lang.Integer
我的问题是: -
请清除我的怀疑.我会感谢天才......