Como o operador de incremento de prefixo e prefixo é avaliado em uma expressão? [duplicado]

Esta questão já tem uma resposta aqui:

Comportamento indefinido e pontos de sequência 5 respostas
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
 int n = 5;

 cout<< n++ <<" "<< ++n << " "<< n++;

 _getch();
 return 0;
}

Quando executo este programa no Visual Studio, a saída é 7 8 5.

Eu acho que é dependente do compilador. (Corrija-me se estiver errado) Mas não deveria ser 7 7 5 ou 5 7 7?

questionAnswers(1)

yourAnswerToTheQuestion