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

时间:2017-05-14 08:31:57

标签: 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];

输出:

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

我的问题是关于" \n"[j==5]部分。 有谁知道这种语法究竟有用吗?

1 个答案:

答案 0 :(得分:21)

" \n"是3个char的数组。您可以索引为正常数组。布尔值隐式转换为整数:false0true1。因此,如果没有,'\n'j == 5会使用' '