我正在编写一个程序,要求输入三个数字,然后说出哪个是主数字,副数字和中间数字。当我执行程序时,主要,次要和中间的空间中什么都没有出现。我不知道在声明变量或其他内容时是否出错。
这只是代码的一小部分。我没有发布完整的,因为它是相同的,但是有其他可能性。
#include <iostream>
using namespace std;
int N1, N2, N3;
int main()
{
cout << "First Number: ";
cin >> N1;
cout << "\nSecong Number: ";
cin >> N2;
cout << "\nThird Number: ";
cin >> N3;
if (N1 > N2 && N2 > N3) {
cout << "\n Major: ", N1;
cout << "\n Middle: ", N2;
cout << "\n Minor\n: ", N3;
}
else if (N1 > N3 && N3 > N2) {
cout << "\nMajor: ", N1;
cout << "\nMiddle: ", N3;
cout << "\nMinor\n: ", N2;
}
// additional cases omitted
}
答案 0 :(得分:2)
该行:
cout << "\n Major: ", N1;
由于C++ operator precedence,被解析为:
(cout << "\n Major: "), N1;
comma operator评估其左侧,丢弃结果,然后评估右侧,将其作为表达式的结果生成,此处为N1
。但是用这个值什么也做不了。
您想使用<<
而不是,
打印两个值:
cout << "\n Major: " << N1;
这将被解析为:
(cout << "\n Major: ") << N1;
内部表达式打印其参数,并产生流(cout
)作为结果。然后,外部表达式执行相同的操作。因此,<<
运算符可以像这样无限期地链接:
cout << value1 << value2 << value3 << ... << valueN;