请教一个有关参数宏的问题
#define SQUARE(n) ((n)*(n))
void main()
{
int i=5;
int j=SQUARE(i++); //注1
cout < <i < < ' ' < <j < <endl;
int k=5;
int m=0;
m=SQUARE(k++); //注2
cout < <k < < ' ' < <m < <endl;
}
输出结果为:7 30
7 25
注1处用宏所得结果去初始化j,注2处用宏所得结果给m赋值。我知道SQUARE(i++)被替换为((i++)*(i++)),但为什么j、m的结果不同?请高手指教。
[解决办法]
vc6.0结果
7 25
7 25
[解决办法]
C++BUILDER结果为
7 25
7 25