printf()函数

加入嵌入式技术QQ群:398294860,免费获取嵌入式技术文档,嵌入式最新学习路线指南,更多嵌入式教程,访问宅学部落淘宝店:https://wanglitao.taobao.com/

我们可以使用printf函数来打印一个变量的值。printf是C标准库中定义的一个函数,用来格式化打印不同类型的数据,printf函数的使用方法如下:

printf("格式匹配字符串", 变量列表);

正如上面的程序所示,不同类型的数据,要使用不同的格式匹配符(如%d,%f等),就可以将它们在屏幕上打印出来。打印到屏幕时,字符串中的格式匹配符用变量列表中具体变量的值代替,我们经常使用的匹配格式符有:

%c:打印一个字符型数据(char)
%d:打印一个整型数据(int)
%f:打印一个浮点型数据(float)
%ld:打印一个长整型数据(long int)

这几个格式匹配符都是按照10进制的格式打印数据,如果你想按照其他进制的格式打印,可以使用下面的格式匹配符:

%o:按照8进制格式打印
%d:按照10进制格式打印
%x:按照16进制格式打印

同样一个变量a,我们使用不同的打印格式,打印出来的值也不一样:

#include <stdio.h>
int main(void)
{
    int a = 15;
    printf("08: a = %o\n", a);
    printf("10: a = %d\n", a);
    printf("16: a = %x\n", a);

    return 0;
}

编译并运行上面的程序:

# gcc main.c
# ./a.out
08: a = 17
10: a = 15
16: a = f

通过程序的运行结果我们可以看到:对于同一个变量a,分别使用8进制、10进制和16进制打印,虽然打印出来的值不一样,但它们表示的大小是一样的,都是15。

一个整型数据可以分为有符号整型和无符号整型,%d默认是打印一个有符号的整型变量。如果想打印一个无符号整型变量,则要使用%u格式匹配符。数据的类型不同,要使用与之匹配的格式匹配符才能正确打印出它的值,比如一个负数-1,是一个有符号整型数据,如果你使用%u匹配格式符去打印它的值,可能就跟你预期的打印中不同了:

#include <stdio.h>
int main(void)
{
    int a = -1;
    printf("a = %d\n", a);
    printf("a = %u\n", a);

    return 0;
}

程序的运行结果:

a = -1
a = 4294967295
专门为嵌入式设计的C语言进阶视频教程:《C语言嵌入式Linux高级编程》,一共9期,涉及计算机体系结构、ARM汇编与反汇编、程序的编译链接原理、堆栈内存、Linux内核的面向对象编程思想、多任务编程、C语言的模块化编程等专题,具体课程详情可点击淘宝:C语言嵌入式Linux高级编程