新手自学c++在练习时遇到了一个小白有关问题,望各位解答,多谢

新手自学c++在练习时遇到了一个小白问题,望各位解答,谢谢
小弟大一cs专业的新生,在国外的,因为国外课本一下子并不能全部读懂所以结合《C++ primer》一起看了。
在第一章遇到个小问题。如下:

当我的code是:

#include <iostream>
int main()
{
int i=10;
while (i>=0)
{
std::cout<<i;
--i;


}

return 0;
}


显示的结果是 109876543210,
但是当


#include <iostream>
int main()
{
int i=10;
while (i>=0)
{

--i;
std::cout<<i;

}

return 0;
}
显示的结果是9876543210-1

希望各位可以给个明确的定义来解释“std::cout<<i;”放在运算式前和后的区别。谢谢了。我这里凌晨1:15了 困死了,Many thanks!

------解决方案--------------------
std::cout<<i<<std::endl;
输出语句改成这样能看清楚点

表达式i++的值是i 执行完毕之后令i的值加1
表达式++i的值是i+1 执行完毕之后令i的值加1
你的代码没有利用到表达式的值 
作用就只是将i的值-1
------解决方案--------------------
cout<<i就是一个输出而已啊,放在运算式之前和之后没有任何区别,这里唯一的区别就是i自减是在输出之前还是之后实行的。上面一个是在输出之后,所以从10开始输出,下面一个是在输出之前自减,所以从9开始输出。
------解决方案--------------------
这个不是std::cout的问题,第一段i还没有自减,所以先输出10,然后9,8,7……
第二段i先自减,然后再std::cout,所以这个时候i已经变成9了,接下去就是8,7,6……等到i=0的时候依然满足while,所以再--i,变成-1了