что значит конструкция в выводе c++?
Имеется следующий код на 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
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
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();