【发布时间】:2013-02-26 07:13:45
【问题描述】:
我最近偶然发现了这样的代码:
uint32_t val;
...
printf("%.08X", val);
这让我很困惑。我的意思是,要么指定0+width,要么指定精度,两者有什么意义?
宽度参数...控制最小字符数 是输出。如果输出值的字符数少 超过指定的宽度,添加空格...。如果宽度是前缀 由 0 增加前导零 ... .
宽度规范永远不会导致值被截断。 ...
... 它由句点 (.) 后跟一个非负小数组成 整数,根据转换类型,指定 ... 要输出的有效位数。
类型决定精度的解释或 省略精度时的默认精度...
d, i, u, o, x, X- 精度指定最小数量 要打印的数字。如果参数中的位数小于 比精度,输出值在左边用零填充。这 当位数超过精度时,值不会被截断。
所以我要么使用"%08X" 或 "%.8X",但"%.08X" 对我来说没有任何意义。
然而,它似乎没有任何区别,也就是说,所有三个变体似乎都产生相同的输出。
【问题讨论】:
标签: c++ visual-c++ printf number-formatting