教育改变生活
标题:
【C语言】printf 函数
[打印本页]
作者:
wander
时间:
2023-12-27 20:45
标题:
【C语言】printf 函数
本帖最后由 wander 于 2023-12-27 20:47 编辑
printf 不仅可以输出字符串,还可以输出整数、小数、单个字符等,并且输出格式也可以自己定义,例如:
以十进制、八进制、十六进制形式输出;
要求输出的数字占 n 个字符的位置;
控制小数的位数。
printf 是 print format 的缩写,意思是“格式化打印”。这里所谓的“打印”就是在屏幕上显示内容,与“输出”的含义相同,所以我们一般称 printf 是用来
格式化输出
的。
先来看一个简单的例子:
printf("C语言中文网");
这个语句可以在屏幕上显示“C语言中文网”,与
puts("C语言中文网");
的效果类似。
输出变量 abc 的值:
int abc=999;printf("%d", abc);
这里就比较有趣了。先来看
%d
,d 是 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 的简写。
我们把代码补充完整,体验一下:
#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 文档时按下回车键。
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语言中使用频率最高的一个函数一点也不为过,每个C语言程序员都应该掌握 printf 的用法,这是最基本的技能。
不过 printf 的用法比较灵活,也比较复杂,初学者知识储备不足,不能一下子掌握,目前大家只需要掌握最基本的用法,以后随着编程知识的学习,我们会逐步介绍更加高级的用法,最终让大家完全掌握 printf。
【脑筋急转弯】
%ds输出什么
%d 输出整数,%s 输出字符串,那么 %ds 输出什么呢?
我们不妨先来看一个例子:
#include
<stdio.h>
int
main
()
{
int
a
=
1234
;
printf
(
"a=%ds
\n
"
,
a
);
return
0
;
}
运行结果:
a=1234s
从输出结果可以发现,
%d
被替换成了变量 a 的值,而
s
没有变,原样输出了。这是因为,
%d
才是格式控制符,
%ds
在一起没有意义,
s
仅仅是跟在
%d
后面的一个普通字符,所以会原样输出。
欢迎光临 教育改变生活 (http://bbs.goldoar.com/)
Powered by Discuz! X3.2