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

dro*_*rco 19 c++ arrays pointer-arithmetic

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

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];
Run Code Online (Sandbox Code Playgroud)

输出:

* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
Run Code Online (Sandbox Code Playgroud)

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

P. *_*try 21

" \n"是3 char秒的数组.您可以索引为正常数组.布尔值隐式转换为整数:falseto 0,trueto 1.所以它将'\n'用于j == 5,' '如果没有,