printf("%.-1f",34.14)在glibc中输出%0.-1f是否正确?原因是什么
关于printf输出的问题解答
这个输出是不正确的,具体原因如下:
- 按照C语言标准(C99及之后版本),
printf的格式说明里,精度部分是.后面跟可选的十进制数字;如果指定的精度值是负数,这个精度参数会被忽略,相当于没写精度。 - 对于
f类型的转换符,没指定精度时默认输出6位小数,所以printf("%.-1f", 34.14);的正确输出应该是34.140000。 - 你在glibc环境里得到
%0.-1f这种输出属于异常情况,要么是所用glibc版本存在格式解析的bug,要么是测试环境有其他干扰因素导致的错误结果。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

