C++ 为什么可以';条件运算符中不能有endl吗?
我试图使用for循环打印逗号分隔的数字列表,但我不希望最后一个数字后面有逗号,而是希望最后一个数字后面有一个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,
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]
coutendl
是一个函数,它添加一个\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,
coutendl
是一个函数,它添加一个\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”
等等。