Печать в обратном порядке

Попытка перегрузки оператора () в следующем примере:

#include <iostream>
using namespace std;

class Fib {
  public:
    Fib() : a0_(1), a1_(1) {}
    int operator()();
  private:
    int a0_, a1_;
};
int Fib::operator()() {
    int temp = a0_;
    a0_ = a1_;
    a1_ = temp + a0_;
    return temp;
}

int main() {
    Fib fib;

    cout << fib() <<"," << fib() << "," << fib() << "," << fib() << "," << fib() << "," << fib() << endl;
}

Он печатает последовательность fib в обратном порядке как 8,5,3,2,1,1. Я понимаю, что состояния хранятся в () наложении, но почему печать отображается в обратном порядке?

1 ответ

Оператор << - это некоторая функция, определенная для ее параметров. Порядок вычисления аргументов функции не указан. Их можно оценить справа налево или слева направо. Кажется, ваш компилятор оценивает их справа налево.

Другие вопросы по тегам