这段代码让我很困惑。我无法理解%0里面在做什么printf!
代码:
#include <stdio.h>
int main() {
int a = 100;
printf("%0 %x", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出
%x
Run Code Online (Sandbox Code Playgroud)
%0 %x具有无效的printf转换规范:
这0是一个标志,指定数字表示应该用初始零填充到指定的宽度(此处未指定)
the 是一个标志,指定带符号的转换应该在与 a 相同的位置加上一个空格作为-负数的前缀。
第二%是在转换说明,因此初始部分仅仅是一个变型%%与2米额外的标志,因此应使%字符被输出,但C标准规定在7.21.6.20的fprintf功能即
%:%写了一个字符。不转换任何参数。完整的转换规范应为%%。
因此%0 %是无效的转换规范,因为%不接受标志。
大多数库只会输出%x,即:%for%0 %和xfor the trailing x,忽略a参数,这就是你在系统上得到的,但行为实际上是未定义的,所以什么都不能假设。
相反,printf("|%0 5d|", 100);将输出,| 0100|但对于x无符号的转换忽略空格,因此printf("|%0 5x|", 100);将输出|00064|.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |