Cac*_*ito 5 c floating-point c99 math.h format-specifiers
对于intN_t类型,有新的格式说明符,例如%"PRIiN"and和%"SCNiN"for printf以及scanf函数族。
float_t和的新格式说明符是什么(如果有)double_t?(在中定义math.h)
我可以-safely-使用%f和%lf?我不这么认为,因为float_t它至少与一样大float,但可以定义为long double。
由于没有人回答,而且我在任何地方都找不到答案,这可能是C语言中的错误吗?
这些在标准中不存在,因此您必须自己使用它们来定义它们FLT_EVAL_METHOD(C11 7.12.2)。
我将分享我在库中为此编写的代码:
#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
Run Code Online (Sandbox Code Playgroud)
然后你应该能够做到:
double_t x;
scanf(" %"SCNaDBL"", &x);
printf("x = %"PRIaDBL"\n", x);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |