最后一个学期在做什么?

Whats the last term doing?

在此声明中

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

cout 语句 [i==n] 中的最后一项是做什么的? 我猜这个循环会打印 space 个单独的数字。

这是一种钝化的写法:

(i == n ? '\n' : ' ')

即当i == n时打印换行,否则打印space。

想法是用 spaces 分隔数字,并在打印完所有数字后换行。

索引字符 ' ' 或字符 '\n' 是一种愚蠢的方法。这做同样的想法并打印 "Hello World":

#include <iostream>

int main() {
        for (int i = 0; i < 11; i++)
                std::cout << "Hello World"[i];
        return 0;
}

i == n 将成为 truefalse。当使用 [i == n] 转换为整数进行索引时,您会得到第一个或第二个元素