版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38908061/article/details/79404204
具体看下例:
printf("\n \n \n 下面是d格式\n");
for( i=0;i<10;i++)
printf("xx%dxx", 12);
printf("\n \n \n 下面是6d格式\n");
for (i = 0; i<10; i++)
printf("xx%6dxx", 12);
printf("\n \n \n 下面是06d格式\n");
for (i = 0; i<10; i++)
printf("xx%06dxx", 12);
printf("%md",num)这个格式中,m表示输入的总长度一定大于等于m(右对齐,前面不够放空格)。
如果m前面是0,则表示在前面补0直至达到足够位数。
如果前面是减号“-”,则表示左对齐。其他格式见下:
关于小数点位的表示:
printf("\n \n \n 下面是4f\n");
for (i = 0; i<10; i++)
printf("xx%4fxx", 123.123);
printf("\n \n \n 下面是2.3f\n");
for (i = 0; i<10; i++)
printf("xx%2.3fxx", 123.123);
printf("\n \n \n 下面是15.4f\n");
for (i = 0; i<10; i++)
printf("xx%15.4fxx", 123.123);
%m.nf中的n表示小数点为n位。对于m,显然对于默认输出7位的float型变量来讲,%4f和%2.3f中的4位和2位太小了,所以不会对默认大于等于7位有效数字的float型变量(0.000000)产生实质影响。
扫描二维码关注公众号,回复:
4327304 查看本文章
另外发下如下问题:
printf("请输入'123.123':");
scanf_s("%f", &b);
printf("这是输入的变量得到的float:%f\n", b);
printf("这是直接写在程序内的立即数123.123的folat表达:%f\n", 123.123);
得到的结果是这样的:
写在程序内的123.123和float型的123.123在输出时,最后一位小数不一样。
最后有如下结论:
由于float型变量默认7个字节,当定义的float变量整数部分有3个字节的时候,小数部分的末尾其实已经溢出了,所以导致出错。而立即数是确认后面没有任何东西的了,因此输出得到的末尾是0。
换用double型变量果然解决了上述问题。
另外附上各种变量的 长度大小:
单精度,float,32位,有效位数为7位 双精度,double,64位,有效位数15位
关于int和long等,参考这个: