在这个声明中,
这个
for (i = 1; i <= n; i++) {
cout << i << " \n"[ i == n ];
}
这个
cout
语句中的最后一个项 [i==n]
是在做什么?我猜这个循环会打印以空格分隔的数字。这是一种写作方式不太直白的表达:
(i == n ? '\n' : ' ')
也就是说,当i == n
时,打印一个换行符,否则打印一个空格。
这个想法是通过空格分隔数字,并在所有数字都被打印后放置一个换行符。
将字符' '
或字符'\n'
作为索引是一种愚蠢的方式。以下代码实现相同的功能并输出"Hello World":
#include <iostream>
int main() {
for (int i = 0; i < 11; i++)
std::cout << "Hello World"[i];
return 0;
}
i == n
可能是 true
或者 false
。当用 [i == n]
进行索引时,将其转换为整数,您将得到第一个或第二个元素。
[]
的参数。i["Hello World"]
。;-) - Arne Vogel
[ i==n ]
中的不寻常表达方式。 - MSaltersi == n
会变成0
或者1
。所以,一旦有人理解了"foo"[bar]
的含义,对于"foo"[i == n]
的理解对我来说就显得微不足道了。 - underscore_d