这是我们第一天学c就接触的东西:
我们今天就来彻底研究一下这个格式串字符到底有多少细节.
一.flag
示例如下:
1.
2.
3.
或者
均可
4.
或
5.(注意,0和-不能组合在一起,因为我们减号的意思是左对齐,那都左对齐了肯定没有地方去填充0了)
6.
或
二.width或.prec
1.
(整个输出占据九个字符,并保留小数点后两位)
(前面有三个空格)
2.
(6用来代替*,这样子*可以是一个变量,提高了我们格式的灵活性)
(前面有三个空格)
三.hlL
如果我们做一个这样的输出,我们的编译器会给我们一个warning.我们先不管,运行得到结果57.原因是因为12345是以int类型传入的(4字节),但%hhd只会读取最低的1个字节,即8位.12345的二进制最低8位对应十进制57,因此输出的结果是57.(老师用十六进制做解释).我们可以在前面加个char做强制类型转换,这样就没有warning了.
其他的可以后面自己试试.
四.type
1.printf
%n的意思是,我的输入输出到%n前,已经输入输出了多少个字符,然后填到那个指针所指的变量里头.
2.scanf
1)
它把我们第一个输入的123给跳过了.
2)
3)
五.printf和scanf的返回值
我们可以来试一下:
运行得到结果:
第一个1的意思是我们的scanf读到了一个"1234",而5的意思是我们的printf输出了五个字符(包括'\n').