cout << " \n"[i == n - 1]; 是如何实现的?工作?

2024-01-24

我不明白怎么办[i == n-1]在这种情况下工作

for (int i = 0; i < n; i++) {
    cout << a[i] << " \n"[i == n - 1];
}

表达i == n-1是一个布尔表达式,其计算结果为1(正确)或0(错误的)。

" \n"是一个包含 3 个字符值的数组:

  • Space (0x32)
  • \n (0x0D)
  • NULL (0x00)

所以完整的表达式将计算为Space or the \n,取决于如果i是数组的最后一个索引a.

带有 cout 的完整 for 循环将打印空格,直到i位于数组的末尾,然后最终会打印一个\n在最后一个元素之后。

它很聪明,但也令人困惑。我会告诉程序员找到更好的方法。

我可能更喜欢使用三元运算符(? :)

for (int i = 0; i < n; i++) {
        cout << a[i] << (i == n - 1) ? "\n" : " ";
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cout << " \n"[i == n - 1]; 是如何实现的?工作? 的相关文章

随机推荐