1、问题的引出
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int n=10;
//printf("%d%d%d%d%d",n,n++,n,++n,++n);
cout<<n<<" "<<n++<<" "<<n++<<endl;
cout<<n<<" "<<n++<<" "<<n++<<" "<<++n<<" "<<++n<<endl;
system("pause");
return 0;
}
第一行输出比较好理解,需要注意的问题是输出的压栈顺序是自右向左(与函数的参数压栈顺序相同)。那第二行输出呢?
2、看一个例子
printf("%d%d%d%d%d",n,n++,n,++n,++n);的汇编代码及注释如下
//++n;
00094A45 mov eax,dword ptr [n]
00094A48 add eax,1
00094A4B mov

本文探讨了C++中预增++n和后增n++的操作符在输出时的顺序和原理。通过实例分析,揭示了它们在实际编程中的行为和可能的混淆点。

被折叠的 条评论
为什么被折叠?



