float_t和double_t格式说明符

时间:2018-02-17 19:19:33

标签: c floating-point c99 format-specifiers math.h

对于intN_t%"PRIiN"个函数系列,%"SCNiN"类型有新的格式说明符,例如printfscanf

float_tdouble_t的新格式说明符是什么(如果有)? (在math.h中定义)

我可以 - 使用%f%lf吗?我不这么认为,因为float_t至少与float一样大,但可以定义为long double

由于没有人回答,我无法在任何地方找到答案,可能是C中的错误吗?

2 个答案:

答案 0 :(得分:1)

为了保持谨慎和便携,您可以在%Lf控制字符串{@ 1}}中将printffloat_t类型的值转换为double_t

<强>编辑: long double的格式说明符是long double而不是%Lf

你必须对scanf更加谨慎,因为在这种情况下,施法不会帮助你。

或者,您可以为%lfprintf定义自己的scanffloat_t格式说明符,并使用double_t [1 ]宏,找出FLT_EVAL_METHODfloat_t分别等同的内置类型。

答案 1 :(得分:0)

这些在标准中不存在,因此您必须使用select a.*, p.* from appointment a inner join patient p on p.pno = a.pno where p.username = '$username' and weekstart = ? -- you can remove this if you don't need it. (C11 7.12.2)自己定义它们。

我将共享在库中编写的代码:

FLT_EVAL_METHOD

然后您应该能够:

#if (FLT_EVAL_METHOD == 0)
#define PRIaFLT     "a"
#define PRIAFLT     "A"
#define PRIeFLT     "e"
#define PRIEFLT     "E"
#define PRIfFLT     "f"
#define PRIFFLT     "F"
#define PRIgFLT     "g"
#define PRIGFLT     "G"

#define SCNaFLT     "a"
#define SCNeFLT     "e"
#define SCNfFLT     "f"
#define SCNgFLT     "g"

#define PRIaDBL     "la"
#define PRIADBL     "lA"
#define PRIeDBL     "le"
#define PRIEDBL     "lE"
#define PRIfDBL     "lf"
#define PRIFDBL     "lF"
#define PRIgDBL     "lg"
#define PRIGDBL     "lG"

#define SCNaDBL     "la"
#define SCNeDBL     "le"
#define SCNfDBL     "lf"
#define SCNgDBL     "lg"


#elif   (FLT_EVAL_METHOD == 1)
#define PRIaFLT     "la"
#define PRIAFLT     "lA"
#define PRIeFLT     "le"
#define PRIEFLT     "lE"
#define PRIfFLT     "lf"
#define PRIFFLT     "lF"
#define PRIgFLT     "lg"
#define PRIGFLT     "lG"

#define SCNaFLT     "la"
#define SCNeFLT     "le"
#define SCNfFLT     "lf"
#define SCNgFLT     "lg"

#define PRIaDBL     "la"
#define PRIADBL     "lA"
#define PRIeDBL     "le"
#define PRIEDBL     "lE"
#define PRIfDBL     "lf"
#define PRIFDBL     "lF"
#define PRIgDBL     "lg"
#define PRIGDBL     "lG"

#define SCNaDBL     "la"
#define SCNeDBL     "le"
#define SCNfDBL     "lf"
#define SCNgDBL     "lg"


#elif   (FLT_EVAL_METHOD == 2)
#define PRIaFLT     "La"
#define PRIAFLT     "LA"
#define PRIeFLT     "Le"
#define PRIEFLT     "LE"
#define PRIfFLT     "Lf"
#define PRIFFLT     "LF"
#define PRIgFLT     "Lg"
#define PRIGFLT     "LG"

#define SCNaFLT     "La"
#define SCNeFLT     "Le"
#define SCNfFLT     "Lf"
#define SCNgFLT     "Lg"

#define PRIaDBL     "La"
#define PRIADBL     "LA"
#define PRIeDBL     "Le"
#define PRIEDBL     "LE"
#define PRIfDBL     "Lf"
#define PRIFDBL     "LF"
#define PRIgDBL     "Lg"
#define PRIGDBL     "LG"

#define SCNaDBL     "La"
#define SCNeDBL     "Le"
#define SCNfDBL     "Lf"
#define SCNgDBL     "Lg"
#endif