hac*_*cks 1 c format-specifiers
我想出了一个代码
#include <stdio.h>
int main()
{
int i = 1427;
double d = 1427.0;
printf("%#o\n", i);
printf("%#X\n", i);
printf("\n%g\n", d);
printf("%#g\n", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
02623
0X593
1427
1427.00
Run Code Online (Sandbox Code Playgroud)
首先我认为#用于0输出的前缀,但我错了,因为它在最后一个输出中的奇怪行为,它在十进制后打印零.
有人可以解释这#是什么以及它在这里做了什么?
该#标志具有不同的行为,具体取决于上下文.
如果它与使用o,x或X说明符,该值前面有0,0x或0X分别.
如果是用与a/ A,e/ E,f/ F,或者G,该值始终与一个小数点结束.
这种行为在Web上的多个位置都有很好的记录.搜索"printf"和可能的"格式说明符"通常会产生很多好的链接.以下是一些可以满足您的胃口: