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
类型。
%%
:输出?个百分号。