一、基本用法:
printf
将参数文本输出到屏幕,f — (format)
例如,想要输出“I am cool !!!”
# include < stdio.h >
int main ()
{
printf ("I am cool !!!");
return 0;
}
运行后光标会停留在输出结束的地方,如果想要光标停在下一行,可以使用转义字符\n
(换行)。
二、占位符
指这个位置可以用其他值来代入。
占位符的第一个字符都是%
,第二个字符是占位符的类型(整形,浮点型,字符串,等等)。
例子:想要输出there are 2 bottles of water
正常情况下,可以这样输入:
# include <stdio.h>
int main()
{
printf ("there are 2 bottles of water \n");
return 0;
}
我们也可以用到占位符:
# include <stdio.h>
int main ()
{
printf("there are %d bottles of water \n", 2);
return 0;
}
这里的%d
就是占位符,2 是一个整形,所以使用%d
,2就替换了%d
。
输出的结果是一样的。
如果不想限定数字是几:
# include <stdio.h>
int main ()
{
int a=0;
scanf ("%d",&a);
printf ("there are %d bottles of water \n", a);
return 0;
}
此时你在编译器上输入是几,就是几。
常用的占位字符除了%d
,%s
也可以。
例如,我想输出:Yang Di is really handsome
# include <stdio.h>
int main ()
{
printf ("%s is really handsome","Yang Di");
return 0;
}
同理,如果我们也可以想在编译器上输入是谁,就是谁。
输出文本里可以使用多个占位字符。
# include <stdio.h >
int main()
{
printf ("%s drank %d bottles of water","LiHua",2);
return 0;
}
输出的结果是:LiHua drank 2 bottles of water
两个占位字符,第一个占位字符是%s
,第二个占位字符是%d
,分别对应的是printf
的第二个参数LiHua
和printf
的第三个参数 2。有第一个参数是%s drank %d bottles of water
。
所以:printf()
参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf()
的参数就应该有 n +1个,如果参数个数少于对应的占位符,printf()
可能会输出内存中的任意值。
三、占位符还有许多:
%a
:⼗六进制浮点数,字⺟输出为⼩写。
%A
:⼗六进制浮点数,字⺟输出为⼤写。
%c
:字符。
%d
:⼗进制整数。
%e
:使⽤科学计数法的浮点数,指数部分的 e 为⼩写。
%E
:使⽤科学计数法的浮点数,指数部分的 E 为⼤写。
%i
:整数,基本等同于 %d
。
%f
:⼩数(包含float
类型和 double
类型)。
%g
:6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e
为⼩写。
%G
:等同于 %g
,唯⼀的区别是指数部分的 E 为⼤写。
%hd
:⼗进制short int
类型。
%ho
:⼋进制short int
类型。
%hx
:⼗六进制short int
类型。
%hu
:unsigned short int
类型。
%ld
:⼗进制long int
类型。
%lo
:⼋进制long int
类型。
%lx
:⼗六进制long int
类型。
%lu
:unsigned long int
类型。
%lld
:⼗进制 long long int
类型。
%llo
:⼋进制long long int
类型。
%llx
:⼗六进制 long long int
类型。
%llu
:unsigned long long int
类型。
%Le
:科学计数法表⽰的long double
类型浮点数。
%Lf
:long double
类型浮点数。
%n
:已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。
%o
:⼋进制整数。
%p
:指针。
%s
:字符串。
%u
:⽆符号整数(unsigned int)。
%x
:⼗六进制整数。
%zd
: size_t
类型。
%%
:输出⼀个百分号。