printf()中的哈希符号'#'有什么作用?

h4c*_*k3d 5 c printf

int x = 0xff;
printf("%#x",x);
Run Code Online (Sandbox Code Playgroud)

输出: 0xff

printf("%x",x);
Run Code Online (Sandbox Code Playgroud)

输出继电器: ff

为什么输出有差异?是什么#特别呢?

cni*_*tar 6

标准说:

7.21.6 - 2

结果转换为"替代形式"....对于x(或X)转换,非零结果具有预先固定的0x(或0X).

它做了其他有趣的东西(特别是花车),但我很少看到它使用 - 我老实说承认我必须要记住它.

  • 请注意,仅当值非零时才会添加前缀,并且 0x/0X 与十六进制数字的大小写相同。这很少/从来不是我想要的十六进制,所以我总是使用 `0x%X` 而不是 `%#x` 或 %#X`... (2认同)