任何人都可以解释输出 printf(“%0 %x”,a); 吗?
这段代码让我很困惑。我无法理解%0里面在做什么printf!
代码:
#include <stdio.h>
int main() {
int a = 100;
printf("%0 %x", a);
return 0;
}
输出
%x
回答
%0 %x具有无效的printf转换规范:
-
因此
%0 %是无效的转换规范,因为%不接受标志。
大多数库只会输出%x,即:%for%0 %和xfor the trailing x,忽略a参数,这就是你在系统上得到的,但行为实际上是未定义的,所以什么都不能假设。
相反,printf("|%0 5d|", 100);将输出,| 0100|但对于x无符号的转换忽略空格,因此printf("|%0 5x|", 100);将输出|00064|.