在文章的开头,我想用一个例子来讲解一下强制类型的转换。
#include<stdio.h>
int main()
{
int a = 3.14f;//float类型
//or int a = (int)3.14;将double类型强制转换成int类型
printf("%d\n",a);
return 0;
}
一、printf的简单介绍
printf()的作用是将参数文本输出到屏幕,f 代表的是format(格式化),表示可以定制输出文本的格式。它不会在行尾自动添加换行符,运行结束之后,光标停留在输出结束的地方,不会自动换行。printf()在标准库中运行,必须要有头文件<stdio.h>.
1.1 占位符
占位符的作用就是在这个位置可以用其他值代入。
#include<stdio.h>
int main()
{
printf("t = %d\n",7);//此处的%d就是占位符
printf("%s will come","li lei");//字符串需要用双引号“ ”
return 0;
}
printf()参数与占位符是一一对应关系,如果有n个占位符,printf()参数就应该有n+1个。如果参数个数少于对应的占位符,printf()可能会输出内存中的任意值。
二、占位符的列举
%o:int类型的整数的8进制形式打印。
%d:int类型的整数的10进制形式打印。
%x:int类型的整数的16进制形式打印。
%i:十进制整数,基本等同于%d。
%ho:short int 类型的整数的8进制形式打印。
%hd:short int 类型的整数的10进制形式打印。
%hx:short int 类型的整数的16进制形式打印。
%hu:unsigned short int 类型。
%lo:long int 类型的8进制打印形式。
%ld:long int 类型的10进制打印形式。
%lx:long int 类型的16进制打印形式。
%lu:unsigned long int 类型。
%llo:long long int 类型的8进制打印形式。
%lld:long long int 类型的10进制打印形式。
%llx:long long int 类型的16进制打印形式。
%llu:unsigned long long int 类型。
%c:表示字符。
%e:使用科学计数法的浮点数,指数部分的e为小写。
%E:使用科学计数法的浮点数,指数部分的E为小写。
%f:小数。(包含float类型)
%lf: double 类型的小数。
%g:6个有效数字的浮点数,整数部分一旦超过6位,就会自动转换为科学计数法,指数部分e为小写。
%G:等同于%g,唯一区别是指数部分E为大写。
%n:已输出的字符串数量,该占位符本身不输出,只将值存储在指定变量之中。
%p:指针。
%s:字符串。
%u:无符号整数(unsigned int)。
%zd:size_t类型。
%%:输出一个百分号。
三、限定宽度(最小宽度)
printf("%5d\n",10);//%d采用的是右对齐
printf("%-5d ha ha\n",123);//使用%-5时采用的是左对齐
对于小数,限定符会限制所有数字的最小显示宽度。%f默认小数点后6位,其中小数点也算一位。
对于印刷时候的正负号:
printf("%+d\n",10);//+10
printf("%-d\n",10);//printf("%d\n",-10);
限定小数的位数,最小宽度和小数位数这两个限定值都可以用*来代替,通过printf()的参数传入。示例如下:
printf("Number is %.2f\n",0.523);//结果为0.52,小数还会进行四舍五入
printf("%6.2f\n",123456.5);//结果为123456.50
6的意思就是最少需要打印六位
printf("%*,*f\n",6,2,0.5);//参数传参
还需要注意的是,%s占位符用来输出字符串,默认全部输出。如果只想输出部分开头部分,可用%。[m]s指定输出的长度,其中[m]代表一个数字,表示所要输出的长度。