printf与cout的有关问题

printf与cout的问题
C/C++ code

int main()
{
int i=2;
printf("%d,%d,%d,%d\n",i++,++i,i,i++);
printf("%d\n",i);

    return 0;


}


void main()
{
 int i=2;
 cout<<i++<<++i<<i<<i++<<endl;
 cout<<i<<endl;
}

谁能来详细解释下以上两段代码输出什么吗,为什么会这样输出,求指导!

------解决方案--------------------
http://topic.****.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?14383


每天都有人问...
------解决方案--------------------
不要在同一个表达式中使用++或--超过一次,这样的行为会随着编译器的改变而改变。

换言之,这样的问题没有意义。
------解决方案--------------------
典型的未定义行为。
参考下面链接中的文章:
C,C++表达式求值顺序 裘老的解释
------解决方案--------------------
日经贴,请楼主参看文章解释:


探讨

http://topic.****.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?14383


每天都有人问...

------解决方案--------------------
探讨

日经贴,请楼主参看文章解释:


引用:

http://topic.****.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?14383


每天都有人问...

------解决方案--------------------
日经贴
------解决方案--------------------
不同的编译器有不同的答案。
------解决方案--------------------
不同的编译器有不同的答案。
------解决方案--------------------
前++直接改变变量的值;后++先生成一个中间变量,将原来的值放在中间变量中,然后变量的值加1,所以i++的值为中间变量的值,即原来变量的值而++i的值为i+1的值。