0

我正在尝试使用 for 循环打印以逗号分隔的数字列表,但我不希望在最后一个数字之后有逗号,而是希望有一个endl.

我有这个代码:

for (int j = i; j > 0; j--) {
    // Should print 9, 8, 7, 6, 5, 4, 3, 2, 1[endl]
    cout << j << (j > 1 ? ", " : endl);
}

但是,我收到编译错误

error: overloaded function with no contextual type information
    cout << j << (j > 1 ? ", " : endl);
                                 ^~~~

我已经包含了 iostream,endl在程序的其他部分工作正常,并且替换为endl工作"\n"正常......

我只想知道为什么会出现这个错误

4

3 回答 3

2

endl是一个添加 a\n然后刷新流的函数,它不是字符串。因此,您不能将它与另一个字符串一起使用在三元组中,因为它们的类型不同。

for (int j = i; j > 1; j--) {
    // Prints 9, 8, 7 ,6, 5, 4, 3, 2, 
    cout << j << ", ";
}
cout << 1 << endl;

当然,您需要处理i小于的情况1

另一种选择是您的"\n".

于 2018-10-28T19:25:31.313 回答
1

条件运算符 ?:; 只能返回相同的类型。endl 不是 char* 但 "\n" 是。

于 2018-10-28T19:29:06.370 回答
1

它们必须具有相同的类型。改为使用"\n"

for (int j = i; j > 0; j--) {
    // Should print 9, 8, 7, 6, 5, 4, 3, 2, 1[endl]
    cout << j << (j > 1 ? ", " : "\n");
}
于 2018-10-28T19:25:30.160 回答