用函数调用处理是正常的,j值每次增加1。带参数的宏的引用数值代换进去后j值每次加2
带参数的宏的引用数值代换进去后用++为什么是+2,而不是加一。给j设定过不同的初值,每次j值都是增加2,宏引用设定就是这样吗?
#include <iostream>
using namespace std;
#define M2(y) ((y)*(y))
int main()
{
for (i = 1, j = 1; i <= 5; i++) cout << M2(j++) << " "; //宏引用处理
cout << endl;
return 0;
}
我的电脑上的运行结果:1 9 25 49 81
变成了(j+2)的平方
M2(j++)被替换成((j++)*(j++)),可不是每次循环都加2么
宏是简单的在编译前进行代码的替换,不是像函数一样把参数计算出来再传递进去。
谢谢
j++不是加1吗?为什么在宏引用里面变成了加2?
刚刚开始学,有点混乱了