что значит конструкция в выводе c++?

Рейтинг: 4Ответов: 1Опубликовано: 13.02.2023

Имеется следующий код на c++:

#include <iostream>
#include <typeinfo>

class my_stack
{
    static const int MAX_SIZE = 100;

    int stack[MAX_SIZE];
    int size;

public:
    void push(int a)
    {
        stack[size++] = a;
    }
    int pop()
    {
        return stack[--size];
    }
    my_stack()
    {
        size = 0;
    }
};

int main()
{
    my_stack st;
    for (int i = 0; i < 5; ++i) {
        st.push(i);
    }
    std::cout << st.pop() << (st.pop(), st.push(6), st.pop()) << st.pop();
    return 0;
}

Не могу понять, что делает конструкция (,,) в строке:

std::cout << st.pop() << (st.pop(), st.push(6), st.pop()) << st.pop();

Результат работы программы:

236

Ответы

▲ 5

A, B равно просто B. Но A вычисляется перед B, и результат A отбрасывается.

A, B, C - аналогично. Результат равен C, но сначала вычисляется A, затем B, затем C.

Поэтому std::cout << st.pop() << (st.pop(), st.push(6), st.pop()) << st.pop(); эквивалентно

std::cout << st.pop();
st.pop();
st.push(6);
std::cout << st.pop() << st.pop();