【问题标题】:Whats the last term doing?最后一个学期在做什么?
【发布时间】:2017-12-14 03:41:15
【问题描述】:

在此声明中

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

cout 语句 [i==n] 中的最后一个词是做什么的? 我猜这个循环会打印空格分隔的数字。

【问题讨论】:

  • @underscore_d:绝对不是。注意[ i==n ] 中的不寻常表达式。
  • 并通过标准布尔评估,i == n 变为 01。所以,一旦有人知道"foo"[bar] 做了什么,"foo"[i == n] 对我来说似乎微不足道。

标签: c++ loops cout


【解决方案1】:

这是一种迟钝的写法:

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

i == n时,打印换行符,否则打印空格。

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

【讨论】:

  • 以前从未见过!
【解决方案2】:

索引字符' ' 或字符'\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] 转换为用于索引的整数时,您将获得第一个或第二个元素

【讨论】:

  • 傻限定词的正确使用(应该标准化)!
  • 太棒了!只是,我会将参数交换为[] 以提高质量。 i["Hello World"]。 ;-)
猜你喜欢
  • 2015-03-06
  • 2020-01-23
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多