这个printf技巧是如何工作的

use*_*550 5 c printf

取自这里:

printf("%d", printf("%*s%*s",a,"\r",b,"\r") );

将打印a + b的结果.

它究竟如何运作?

izo*_*ica 7

第二个(内部)printf的作用是打印多个字符a,然后打印多个字符b.printf返回打印的字符的数量,从而的总和ab.

现在让我们更深入一点,printf("%*s", a, "\r")打印一个宽度通过参数指定的字符串(在本例中a) - 这就是星号的作用.默认情况下,字符串用空格填充.因此,您将获得a - 1空格,后跟回车符.这样做两次:printf("%*s%*s",a,"\r",b,"\r")首先打印宽度固定为值的a字符串,然后打印宽度固定为值的第二个字符串b.

之后,外部printf将打印与内部打印的字符数相对应的数字printf,但我们已经知道那将是什么,不是吗?

注:左填充只能增加,绝不会删除字符的代码就是错误的,a = 0b = 0(或课程的底片)