为什么我不能在条件运算符中计算出 endl?
Why can't I cout an endl in a conditional operator?
我正在尝试使用 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
在程序的其他部分工作正常,用 "\n"
替换 endl
工作正常...
我只想知道为什么会出现这个错误
它们的类型必须相同。请改用 "\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");
}
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"
。
条件运算符 ?:;只能 return 相同类型。 endl 不是 char* 但 "\n" 是。
我正在尝试使用 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
在程序的其他部分工作正常,用 "\n"
替换 endl
工作正常...
我只想知道为什么会出现这个错误
它们的类型必须相同。请改用 "\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");
}
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"
。
条件运算符 ?:;只能 return 相同类型。 endl 不是 char* 但 "\n" 是。