What is execution strategy that the C++ runtime adopts to produce the  output 4545 when executing the below given code.
#include <iostream>
using namespace std;
int main()
{
    int a=5;
    cout     <<a++     <<++a     <<a--     <<--a;
}
I expected the output to be 5444 
Please help me understand how the C++ runtime handles this code.
 
     
    