glibcprintf("% .0d",0)
打印一个空格,并printf("%+.0d",0)
打印一个加号,并且 glib printf 测试检查此行为。但它是正确的吗?从标准(7.19.6.1):
+ 有符号转换的结果总是以加号或减号开头。(如果未指定此标志,则仅在转换负值时才以符号开头。)
空格 如果有符号转换的第一个字符不是符号,或者如果有符号转换没有字符,则在结果前添加一个空格。如果同时出现空格和 + 标志,则忽略空格标志。
但是,关于说明d
符的精度:
以零精度转换零值的结果是没有字符。
自然,这个“无字符”规则并不排除将字段填充到请求的宽度,但据我所知,前缀空格或是+
转换的一部分,因此受“无字符”规则的约束。
这件事有没有被澄清过?