一个Abstrusing printf()表达式

Qui*_*tic 2 c printf

在阅读一些随机代码时,我碰巧遇到了printf()一个对我来说有点奇怪的表达式,声明是这样的

void PrintDiceFace(int n){
    printf("%d 0 %d\n%d %d %3$d\n%2$d 0 %1$d\n\n",n>50,51%n%2,n>53,n%2);
}
Run Code Online (Sandbox Code Playgroud)

这实际上是模糊的片段版本,它实际上打印了电子骰子的面部.对于例子.

printf()详细解释这个陈述.

http://en.wikipedia.org/wiki/Dice

Ign*_*ams 5

POSIX/SUS printf()允许数字后跟$%,以指示来自可变参数的特定参数应被拾取.

printf("%2$s, %1$s!\n", "world", "Hello");
Run Code Online (Sandbox Code Playgroud)