C++ 为什么可以';条件运算符中不能有endl吗?

C++ 为什么可以';条件运算符中不能有endl吗?,c++,cout,conditional-operator,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); } for(int j=i;j>0;j--){ //应该打印9,8,7,6,5,4,

我试图使用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);
}
for(int j=i;j>0;j--){
//应该打印9,8,7,6,5,4,3,2,1[endl]

cout它们必须具有相同的类型。请改用
“\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");
}
for(int j=i;j>0;j--){
//应该打印9,8,7,6,5,4,3,2,1[endl]

cout它们必须具有相同的类型。请改用
“\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");
}
for(int j=i;j>0;j--){
//应该打印9,8,7,6,5,4,3,2,1[endl]

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

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

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

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

cout条件运算符?:;只能返回相同的类型。endl不是字符*而是“\n”是。

条件运算符?:;只能返回相同的类型。endl不是字符*而是“\n”是。

三元运算符是一个表达式。表达式必须具有可在编译时确定的类型,但在您的情况下,该类型取决于运行时发生的比较结果。它可以使用“\n”进行良好编译因为无论此比较的结果如何,返回类型都是const char*。三元运算符是一个表达式。表达式必须具有可在编译时确定的类型,但在您的情况下,该类型取决于运行时发生的此比较的结果。它可以用“\n”进行良好编译因为不管比较的结果如何,返回类型都是const char*。另一个选项是您的“n”。应该读类似于另一个选项的内容是使用“\n”[。],是吗?哦,是的,输入错误,谢谢!另一个选项是您的“n”。应该读类似于另一个选项的内容是使用“\n”[。],是吗?噢,是的,打字错误,谢谢!实际上,
“\n”
的类型既不是
char*
类型,也不能转换为这种类型!它是
char const[2]类型
可转换为
char-const*
。更准确地说,它的类型是“const-char*”,而不是经典意义上的字符数组。它可以转换为“char*”或void*或其他形式,但不能在运行时修改。以上任何一项都不能更改!如果编译器允许您将字符串文字转换为
char*
,则可以不符合传统的转换,从第一个标准中被剔除,并用C++ 14修订版(或C++ 17,不完全确定何时从C++中删除)。..而且字符串文字的类型肯定是一组
char const
对象!上面提到的直接转换将是
const char*
,但在编译器C++17中可以是这样的:
void*str=1>0?(void*)“ssss”:(void*)“wefqwef”;
等等。实际上,
“\n”
的类型既不是
char*
类型,也不能转换为这种类型!它是
char const[2]类型
可转换为
char-const*
。更准确地说,它的类型是“const-char*”,而不是经典意义上的字符数组。它可以转换为“char*”或void*或其他形式,但不能在运行时修改。以上任何一项都不能更改!如果编译器允许您将字符串文字转换为
char*
,则可以不符合传统的转换,从第一个标准中被剔除,并用C++ 14修订版(或C++ 17,不完全确定何时从C++中删除)。…而且字符串文字的类型肯定是一组
char const
对象!上面提到的直接转换将是
const char*
,但在编译器C++17中可以是这样的:
void*str=1>0?(void*)“sss”:(void*)“wefqwef”
等等。