2011-11-13 29 views
4

printf("%d",printf("%*s%*s",6,"",6))%* s格式Ç

结果添加2个数字(6 + 6)的,有没有人对这种类型的格式说明

+0

您正在寻找的术语是“嵌套的”。如果你谷歌“嵌套printf”,你会发现很多信息..因为你没有提出一个明确的问题,所以很难回答。 – Niclas

+0

@Niclas:谢谢.. – Akash

回答

8

您的示例格式错误,“嵌套”printf缺少参数。

如果你写这样的:

printf("%d",printf("%*s%*s",6,"",6, "")); 

如果变成一种确定。 *表示必须从printf的下一个参数中读取精度字段。因此,在这种情况下,所述“嵌套” printf打印至多长度的两个字符串6.

printf由于返回写入的字符数,内printf返回12,其中外printf打印。从人页的相关部分

引用:

精度

可选的精度,在后跟一个可选的十进制数字字符串的期间(“”)的形式。 而不是一个十进制数字字符串可以写“*”或“* m $”(对于某些十进​​制整数m)来指定 精度分别在下一个参数或第m个参数中给出,其中必须有 为int类型。如果精度仅为'。',或者精度为负值,则精度为 为零。这给出了d,i,o,u,x和X转换中出现的最小数字位数,a,e,E,f和F组合的基数字符后出现的位数 版本,g和G转换的有效数字的最大数目或字符的最大数目 要从s和S转换的字符串打印。

我不知道怎么便携本的,但我敢肯定的是,有更好的方法将两个数字相加

+0

感谢您的帮助 – Akash

-1

printf返回打印的字符的数目。其余的应该是显而易见的。

+1

-1,我们知道你是最权威的天才,但你应该认识到,并不是每个人都像你一样聪明。 – BlackBear

+0

对不起,我很匆忙。我希望这是作者需要了解“12”来自哪里的所有内容。不过现在我不打算改进我的答案,因为其他人已经做得很好。 –

1

作为宽度说明符的A *表示宽度作为参数传入。

printf("%*s%*s", 6, "", 6, ""); 

等同于:

printf("%6s%6s", "", ""); 

这将打印出12位。

printf由于返回打印的字符的数目,它会返回12.

原始代码中缺少最后的“”参数。如果它有效,那纯粹是偶然的。