这段代码中的最后一个printf如何工作?

时间:2018-04-19 23:44:52

标签: c printf

此代码生成一个4阶Sierpinski三角形的ASCII表示,我不知道最后printf是如何工作的。如果有人能向我解释,我将非常感激。

#include <stdio.h>

#define SIZE (1 << 4)
int main()
{
    int x, y, i;
    for (y = SIZE - 1; y >= 0; y--, putchar('\n')) {
        for (i = 0; i < y; i++) putchar(' ');
        for (x = 0; x + y < SIZE; x++)
            printf((x & y) ? "  " : "* ");
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

?是三元运算符。它评估左边的表达式,如果它是非零(真),它选择冒号:之前的第一个值,如果它为零(假),则选择第二个。

答案 1 :(得分:1)

@media ... .content { font-size: 19px; line-height: 1.8; } 或多或少等同于:

printf((x & y) ? "  " : "* ");