c++输出没法理解,求解

c++输出无法理解,求解
#include<IOSTREAM>
#include <STDIO.H>

using namespace std;

int main(){
int b1=1,b2=2,b3=3,b4=4;
int  *p=&b1;

cout<<"b1="<<*p--<<" b2="<<*p--<<" b3="<<*p--<<" b4="<<*p<<endl;
return 0;
}



我用VC 运行了一下,答案为 b1=3 b2=2 b3=1 b4=1;
搞不懂为什么结果是这样子的,谁能说一下嘛。
------解决方案--------------------
    cout<<"b1="<<*p--<<" b2="<<*p--<<" b3="<<*p--<<" b4="<<*p<<endl;
从右向左运算,
------解决方案--------------------
变量在内存中是以栈 方式存储...其它的楼上都已经说了!..