基本使用(格式控制字符串)
如下表(来自C 库函数 - printf()):
格式字符 | 意义 |
---|---|
a, A | 以十六进制形式输出浮点数(C99 新增) |
d | 以十进制形式输出带符号整数(正数不输出符号) |
o | 以八进制形式输出无符号整数(不输出前缀0) |
x,X | 以十六进制形式输出无符号整数(不输出前缀0x) |
u | 以十进制形式输出无符号整数 |
f | 以小数形式输出单、双精度实数 |
e,E | 以指数形式输出单、双精度实数[1] |
g,G | 以%f或%e中较短的输出宽度输出单、双精度实数 |
c | 输出单个字符 |
s | 输出字符数组[2],[3] |
p | 输出指针地址 |
lu | 32位无符号整数[4] |
llu | 64位无符号整数[5] |
注释:
[1]例如 7.25×102、0.0368×105、100.22×10-2、-27.36×10-3 等
[2]为了好理解,我把原文中的“字符串”改成了“字符数组”,但请记住,在C语言中,字符串即为字符数组
[3]可以省略参数
[4]C++中的unsigned int
[5]C++中的unsigned long long int(简写为unsigned long long)
练习 1.写出程序的输出结果:
#include <stdio.h>
int main() {
int x = 10;
printf("%d\n", x);
printf("%o\n", x);
printf("%x ", x);
printf("%u\n", x);
}
请在思考完毕后划开答案:
10
12
a 10
答案解析:
第5行,是以十进制输出带符号整数(并换行),但第8行是输出无符号整数,在x为正数时没有区别
第6行,是以八进制输出一个无符号整数(并换行)
第7行,是以十六进制输出一个无符号整数,但请注意,输出字母是小写;格式控制字符串中末尾是一个空格