c - 这个 printf 技巧是如何工作的

标签 c printf

取自here :

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

会打印a+b的结果。

它究竟是如何工作的?

最佳答案

第二个(内部)printf 所做的是打印与 a 一样多的字符然后与 b 一样多的字符. printf返回打印的字符数,即 a 的总和和 b .

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

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

注意:由于左填充只能添加,永远不会删除字符,代码实际上是错误的 a = 0b = 0 (或者当然是负面的)

关于c - 这个 printf 技巧是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53779523/

相关文章:

c - 如何获取动态分配的内存大小?

c - 在 main、C 中使用后面函数中的变量

c - 如何在函数内打印指向字符数组的指针?

c - 如何在 C 中打开文件以读取和写入其他文件?

C 的 printf 和 fprintf(stdout,) 不打印

c++ - 为什么用 C 复制文件比 C++ 快得多?

c - free 对按值传递给函数的指针有什么作用?

c - c 中的多功能实用程序问题。

c - 使用函数读取文本文件并记录数组中的值

c - C : Addition and Printing简介