这个 你可以 仔细再看看书.
#include#defineSQUARE(X)((X)*(X))//等价于SQUARE(++x)((++x))*((++x))#definePR(X)printf("Theresultis%d.\n",X)intmain(){ intx=4; PR(SQUARE(++x)); return0;}你看第 7 行代码, 括号最里面有 ++x
在计算 SQUARE(++x) 因为这是宏定义, 所以 直接把 参数 ++x 传送,
所以 再运算 ( (++x) )* ( (++x) )
所以 SQUARE( ++x ) 结果就是 36,
接着PR( SQUARE( ++x ) ), 打印输出 The result is 36 .
-------------------------------------------------------分割线---------------------------------------------------------------
另附: 这个 宏定义 的参数 和 平时所写的 函数, 不一样,
程序运行 是 会将 头文件, denfine.....等 先进行 替换,
预处理 不进行 计算, 只进行 字符串的 替换
这个 程序不懂了 , 可以看一下 define 那一章, 直接看 451页
-------------------------------------------------------分割线---------------------------------------------------------------
如果 能帮助到你 请采纳哦, 不懂了 继续问 |