C语言知识汇总 | 09-输出各种类型变量的数据——printf函数

在《03-第一个C语言程序》一节中,我们使用 puts 来输出字符串。puts 是 output string 的缩写,只能用来输出字符串,不能输出整数、小数、字符等,我们需要用另外一个函数,那就是 printf。

printf 比 puts 更加强大,不仅可以输出字符串,还可以输出整数、小数、单个字符等,并且输出格式也可以自己定义,例如:

  • 以十进制、八进制、十六进制形式输出;
  • 要求输出的数字占 n 个字符的位置;
  • 控制小数的位数。

printf 是 print format 的缩写,意思是“格式化打印”。这里所谓的“打印”就是在屏幕上显示内容,与“输出”的含义相同,所以一般称 printf 是用来格式化输出的

先来看一个简单的例子:

printf("neutionwei");

这个语句可以在屏幕上显示“neutionwei”,与 puts("neutionwei");的效果类似。

输出变量 abc 的值:

int abc = 999;
printf("%d", abc);

先来看 %dd 是 decimal 的缩写,意思是十进制数,%d 表示以十进制整数的形式输出。输出什么呢?输出变量 abc 的值。%d 与 abc 是对应的,也就是说,会用 abc 的值来替换 %d。

再来看个复杂点的例子:

int abc = 999;
printf("The value of abc is %d !", abc);

这会在屏幕上显示:

The value of abc is 999 !

字符串 "The value of abc is %d !" 中的 %d 被替换成了 abc 的值,其他字符没有改变。这说明 %d 比较特殊,不会原样输出,会被替换成对应的变量的值。

再来看:

int a = 100;
int b = 200;
int c = 300;
printf("a=%d, b=%d, c=%d", a, b, c);

这会在屏幕上显示:

a=100, b=200, c=300

再次证明了 %d 与后面的变量是一一对应的,第一个 %d 对应第一个变量,第二个 %d 对应第二个变量……

%d称为格式控制符,它指明了以何种形式输出数据。格式控制符均以 %开头,其后跟其他字符。%d 表示以十进制形式输出一个整数。除了 %d,printf 支持更多的格式控制,例如:

  • %c:输出一个字符。c 是 character 的简写;
  • %s:输出一个字符串。s 是 string 的简写;
  • %f:输出一个小数。f 是 float 的简写。

除了这些,printf 支持更加复杂和优美的输出格式。

把代码补充完整,体验一下:

#include <stdio.h>

int main()
{
    int n = 100;
    char c = '@'; // 注意:字符用单引号包围,字符串用双引号包围
    float money = 93.96;
    printf("n=%d, c=%c, money=%f\n", n, c, money);

    return 0;
}

输出结果:

n=100, c=@, money=93.959999

要点提示:

(1)\n是一个整体,组合在一起表示一个换行字符。换行符是 ASCII 编码中的一个控制字符,无法在键盘上直接输入,只能用这种特殊的方法表示,被称为转义字符

所谓换行,就是让文本从下一行的开头输出,相当于在编辑 Word 或者 TXT 文档时按下回车键。

puts 输出完成后会自动换行,而 printf 不会,要自己添加换行符,这是 puts 和 printf 在输出字符串时的一个区别。

(2)//后面的为注释。注释用来说明代码是什么意思,起到提示的作用,可以帮助我们理解代码。注释虽然也是代码的一部分,但是它并不会给程序带来任何影响,编译器在编译阶段会忽略注释的内容,或者说删除注释的内容。

(3)money 的输出值并不是 93.96,而是一个非常接近的值,这与小数本身的存储机制有关,这种机制导致很多小数不能被精确地表示,即使像 93.96 这种简单的小数也不行。
我们也可以不用变量,将数据直接输出:

#include <stdio.h>

int main()
{
    float money = 93.96;
    printf("n=%d, c=%c, money=%f\n", 100, '@', money);

    return 0;
}

输出结果与上面相同。

在以后的编程中,会经常使用 printf,因此说它是C语言中使用频率最高的一个函数一点也不为过。
 

猜你喜欢

转载自blog.csdn.net/Neutionwei/article/details/107943981
今日推荐