屁哥 发表于 2017-8-12 16:23:28

请问 第14课 视频教程中 %-2d 什么意思

查了下 %2d 是前面 加两个空格 前面用两个空格补位么?
         %0.2d 是前面加两个0用0补位对么?
         %-2d 是什么 也是空格补位?是两个空格么?

丶忘却的年少o 发表于 2017-8-12 16:23:29

屁哥 发表于 2017-8-12 16:55
举个栗子呗谢谢

#include <stdio.h>

int main(void)
{
      int a;

      printf("请输入一个整数:");
      scanf("%d",&a);

      printf("2d格式 :%2d\n", a);
      printf("02d格式:%02d\n", a);
      printf("-2d格式:%-2d\n", a);

      return 0;
}




如果位数大于等于你输出的要求就没有什么左右对其和加0了。

丶忘却的年少o 发表于 2017-8-12 16:39:54

本帖最后由 丶忘却的年少o 于 2017-8-12 18:57 编辑

%2d:就是右对齐。以宽度2输出整型数,不足2时,左补空格。比如12,输出就是12;2输出就是 2(有空格)
%-2d:就是左对齐。以宽度2输出整型数,不足2时,右补空格。比如12,输出就是12;2输出就是2 (有空格)
%0.2d:好像没这个说法,应该是%02d。以宽度2输出整型数,不足2时,左补0。比如12,输出就是12;2输出就是02{:10_256:}

屁哥 发表于 2017-8-12 16:55:06

丶忘却的年少o 发表于 2017-8-12 16:39
%2d:就是左对齐。以宽度2输出整型数,不足2时,左补空格。比如12,输出就是12;2输出就是 2(有空格)
%-2d ...

举个栗子呗谢谢

丶忘却的年少o 发表于 2017-8-12 17:04:22

说错了,%2d和%02d是右对齐,%-2d才是左对齐。其实你按照图片中的程序,加2条打印把输出的格式用这三个分别打印看看,就知道了。我现在没办法打代码,不好意思

逄逄 发表于 2017-8-12 18:00:35

分析这个的过程是这样的。
首先看%d,就是说以整型输出。 那么夹在%d中的全是辅助功能符,我们接着看。

1.    % 2 d,中间夹了个2,就是说我输出的这个整型,占2个字符的宽度,右对齐。

可以看到我用了一个%2d, 一个%3d,一个宽度是2个字符,一个宽度是3个字符,因为是右对齐的,所以第一个5前面补1个字符以达到宽度为2,第二个5前面补2个空格,以达到宽度3.

2.    %0.2d, 我觉得你可能是看错了,因为是%d整型输出,就是没有小数点的。其实应该是%02d,依然是右对齐。其中0的意思是以0填充,(上面的例子里用的是空格符填充),2的意思同上,是宽度的意思。

你看我把 %0.4d 里面的小数点删掉了,结果还是一样的。因为%d是整型输出,不带小数部分,你规定小数点格式是无效的。

3.有小数点的正确使用应该是 % . 2f,按照我前面说的分析方式,首先看到是%f,定点小数格式输出。 这里辅助功能符(%f中间夹的部分),m.n或者.n这样的形式,小数部分是几,结果就保留几位小数(四舍五入),整数部分就像上面两例一样,% 08.2 f,表示右对齐,宽度为8,填充0(没有8前面的0就是用空格填充)以补够8个字符宽度,.2表示保留两位小数


4. 如果加了 - 号, 那么就是上面说的右对齐部分改成左对齐,就是你要输出的数字会在它限定的宽度内靠左边,上面的例子里面我们说用空格或者0填充,都是填在左边,数字在靠右的位置,而加了负号以后,就是相反。但是注意,既然数字出现在左边了,那么右边填充0就会改变数字大小,所以Python会忽略左对齐补0

屁哥 发表于 2017-8-12 19:37:22

丶忘却的年少o 发表于 2017-8-12 17:04
说错了,%2d和%02d是右对齐,%-2d才是左对齐。其实你按照图片中的程序,加2条打印把输出的格式用这三个分别 ...

好嘞我试试
页: [1]
查看完整版本: 请问 第14课 视频教程中 %-2d 什么意思