【发布时间】:2019-04-01 18:44:09
【问题描述】:
我正在尝试使用 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" 工作正常...
我只想知道为什么会出现这个错误
【问题讨论】:
-
三元运算符是一个表达式。表达式必须具有可以在编译时确定的类型,但在您的情况下,类型取决于在运行时发生的比较结果。它可以使用 "\n" 很好地编译,因为无论此比较的结果如何,返回类型都是 const char*。
标签: c++ cout conditional-operator endl