1、后++
MacroTest1.cpp:
#include "stdafx.h"
#include "stdio.h"
#define program(x) ((x)*(x)*(x))
int main(int argc, char* argv[])
{
int i=3;
printf("i:%d\n",i);
int j=program(i++);
printf("j:%d\n",j);
printf("i:%d\n",i);
return 0;
}
j=(i++)*(i++)*(i++)执行过程为:
j=i*i*i;
i++;
i++;
i++;
2、后--
MacroTest1.cpp:
#include "stdafx.h"
#include "stdio.h"
#define program(x) ((x)*(x)*(x))
int main(int argc, char* argv[])
{
int i=4;
printf("i:%d\n",i);
int j=program(i--);
printf("j:%d\n",j);
printf("i:%d\n",i);
return 0;
}
j=(i--)*(i--)*(i--)执行过程为:
j=i*i*i;
i--;
i--;
i--;
与后++类似。
3、前++
MacroTest1.cpp:
#include "stdafx.h"
#include "stdio.h"
#define program(x) ((x)*(x)*(x))
int main(int argc, char* argv[])
{
int i=3;
printf("i:%d\n",i);
int j=program(++i);
printf("j:%d\n",j);
printf("i:%d\n",i);
return 0;
}
j=(++i)*(++i)*(++i)执行过程为:
++i;
++i;
temp=i*i;
++i;
j=temp*i;
4、前--
MacroTest1.cpp:
#include "stdafx.h"
#include "stdio.h"
#define program(x) ((x)*(x)*(x))
int main(int argc, char* argv[])
{
int i=5;
printf("i:%d\n",i);
int j=program(--i);
printf("j:%d\n",j);
printf("i:%d\n",i);
return 0;
}
j=(--i)*(--i)*(--i)执行过程为:
--i;
--i;
temp=i*i;
--i;
j=temp*i;
与前++类似。