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