我在C ++程序中声明变量时遇到问题

时间:2019-09-08 22:15:32

标签: c++

我正在编写一个程序,要求输入三个数字,然后说出哪个是主数字,副数字和中间数字。当我执行程序时,主要,次要和中间的空间中什么都没有出现。我不知道在声明变量或其他内容时是否出错。

这只是代码的一小部分。我没有发布完整的,因为它是相同的,但是有其他可能性。

#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
}

1 个答案:

答案 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;