对于intN_t
类型,有新的格式说明符,例如%"PRIiN"
和%"SCNiN"
函数系列,例如printf
和scanf
。
什么是float_t
和double_t
的新格式说明符? (在math.h
中定义)
我可以安全使用%f
和%lf
吗?我不这么认为,因为float_t
至少与float
一样大,但可以定义为long double
。
由于没有人回答,而且我在任何地方都找不到答案,这可能是C语言中的错误吗?
最佳答案
为谨慎起见,您可以在%Lf
控制字符串中使用printf
,并将类型float_t
或double_t
的值强制转换为long double
。
编辑:
长整型的格式说明符是%Lf
而不是%lf
您必须对scanf更加谨慎,因为在这种情况下,强制转换将无济于事。
或者,您可以使用printf
[1]宏来为scanf
和float_t
定义自己的double_t
和FLT_EVAL_METHOD
格式说明符,以找出float_t
和double_t
分别等效于哪些内置类型。