printf当中有个转换声明,按照类型分为整数,浮点数,字符
整数:%d和%i一样,几乎没有任何不同,%o以八进制输出,%u以无符号十进制进行输出,%x和%X分别是大小写的十六进制
浮点数:%a和%A,%e和%E,%g里面会进行一个匹配,当前数值是适合用科学计数法(1.4*10E23这种类型)还是小数来表示进行匹配,有效数值会进行区分,不会记住多余的0;%f和%lf是最常用的
字符用%c
字符串用%s,表示的有两种,一种是存储在数组当中,一种是存储在常量区当中
指针用%p
%用%%,单独的%无法再程序中表现
还有一种修饰符
标记:-代表当前数值会左对齐的方式;+会显示当前数值符号;空格代表如果当前打印时规定了最大位数时,前面或后面会以空格方式进行补全;0和空格类似,只是会以0的方式补全;#非常特殊,在每种场合下含义都不相同,在%o和%x前面是显示格式的作用;如在八进制前加0,在十六进制前加0x;在%f和%e的时候,保证打印一个小数点;使用%g或%G的话,是为了防止结果后面的0被删除
数字,在%后面可以加数字,数字表示当前打印的最小宽度,如%d,打印5,用%2d,打印出来是05
.数字:.数字在%e、%E时,用科学计数法输出数值、%f和%lf时,表示小数右边数字的位数;在%g和%G时,表示有效数字的最大位数;在%s时,表示打印字符的最大数量;在整数数,表示待打印数字的最大位数
Demo代码
#include<stdio.h>
#define INTDEMO 250
int main()
{
const double DOUBLRDEMO = 3.14159;
const short SHORTDEMO = 0XFFFF;
printf("%2d\n", INTDEMO);
printf("%10d\n", INTDEMO);
printf("%-10d\n", INTDEMO);
printf("%f\n", DOUBLRDEMO);
printf("%Lf\n", DOUBLRDEMO);
printf("%4.2Lf\n", DOUBLRDEMO);
printf("%10.3Le\n", DOUBLRDEMO);
printf("%10.3Lf\n", DOUBLRDEMO);
printf("%010.3Lf\n", DOUBLRDEMO);
printf("%+010.3Lf\n", DOUBLRDEMO);
printf("%c\n", SHORTDEMO); //先转换成int类型,再进行输出SHORTDEMO会变成0XFFFFFFFF
float f_num = 3.0;
double d_num = 3.0;
int i_num = 2000000000;
long l_num = 1234567890;
printf("%.lg %.lg %.lg %.lg\n",f_num,d_num,i_num,l_num);
printf("%ld %ld\n",i_num,l_num);
printf("%ld %ld %ld %ld\n",f_num,d_num,i_num,l_num);
/*float会转换成64位的double类型输出
如果输出的内容牛头不对马嘴
100%因为他会按照我们给定的转换符来确定我在我的参数中取多少位的数据
在确定了这件事情之后,什么事情都变得清楚了
因为它是按照你规定的长度来读取的,他有可能会把一个变量当成两个数据读取
所以数据之间会变得天差地差
*/
printf("I""Love","Mark"); //这种代码是不能出现在程序员当中的,出现了就可以撞墙了
return 0;
}