输出格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 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等,参考这个:

猜你喜欢

转载自blog.csdn.net/qq_38908061/article/details/79404204
今日推荐