用于在 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
的数组。您可以像普通数组一样索引。布尔值隐式转换为整数:false
到 0
、true
到 1
。所以它将使用 '\n'
作为 j == 5
和 ' '
如果不是,
以下代码打印 '*'
个字符的正方形:
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
的数组。您可以像普通数组一样索引。布尔值隐式转换为整数:false
到 0
、true
到 1
。所以它将使用 '\n'
作为 j == 5
和 ' '
如果不是,