1

glibcprintf("% .0d",0)打印一个空格,并printf("%+.0d",0)打印一个加号,并且 glib printf 测试检查此行为。但它是正确的吗?从标准(7.19.6.1):

+ 有符号转换的结果总是以加号或减号开头。(如果未指定此标志,则仅在转换负值时才以符号开头。)

空格 如果有符号转换的第一个字符不是符号,或者如果有符号转换没有字符,则在结果前添加一个空格。如果同时出现空格和 + 标志,则忽略空格标志。

但是,关于说明d符的精度:

以零精度转换零值的结果是没有字符

自然,这个“无字符”规则并不排除将字段填充到请求的宽度,但据我所知,前缀空格或是+转换的一部分,因此受“无字符”规则的约束。

这件事有没有被澄清过?

4

1 回答 1

4

不,这是在谈论没有修饰符的基本转换;这就是为什么修饰符特别说明当基本转换不产生字符时它们会做什么。

于 2011-07-04T05:07:57.623 回答