用于在 std::cout 中打印新行的 c++ 有趣语法

c++ interesting syntax for printing new line in std::cout

以下代码打印 '*' 个字符的正方形:

int m = 5; int n=5;
for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
        std::cout << "*" << " \n"[j==5];

输出:

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *

我的问题是关于 " \n"[j==5] 部分的。 有谁知道这个语法究竟是如何工作的?

" \n" 是 3 char 的数组。您可以像普通数组一样索引。布尔值隐式转换为整数:false0true1。所以它将使用 '\n' 作为 j == 5' ' 如果不是,