我正在尝试通过使用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"
很好...
我只想知道为什么会发生此错误
答案 0 :(得分:2)
endl
是一个添加\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"
。
答案 1 :(得分: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");
}
答案 2 :(得分:1)
条件运算符?:;只能返回相同的类型。 endl不是char *,而是“ \ n”。