c++ - 为什么我不能在条件运算符中计算出 endl?

标签 c++ cout conditional-operator endl

<分区>

我正在尝试使用 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 工作正常...

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

最佳答案

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"

关于c++ - 为什么我不能在条件运算符中计算出 endl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035263/

相关文章:

c++ - MFC 应用程序中的灯箱样式对话框

C++;编译时警告 "enabled by default"是什么意思?

C++函数cout重定向到文件

c++ - 简单的 c++ cout 语句,一行有格式问题,这是什么?

c++ - C++使用三元运算符声明变量

c++ - 格式化输出c++的问题

c++ - 从现有目标文件创建共享库

c++控制台输出显示在屏幕上

c - Linux 内核中条件始终为真的三元运算符有什么需求?

awk - 如果 awk 中未设置变量,则设置变量