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