#define c语言预处理命令2

来源:百度知道 编辑:UC知道 时间:2024/09/21 13:30:56
以下程序的运行结果是 。
#define MAX(A,B) (A)>(B)?(A):(B)
#define PRINT(Y) printf(“Y=%d\t”,Y)
main()
{
int a=1,b=2,c=3,d=4,t;
t=MAX(a+b,c+d);
PRINT(t);
}
A)Y=3 B)存在语法错误 C)Y=7 D)Y=0
请给我解释下PRINT(t);在宏展开是怎么表示的,答案是C?

宠处理的时候,一定要记住的是,直接代进去,任何多余的动作都不能有

还有记住一点的是在printf""双括号里的是不能替代的话,所以这里的Y是输出形式。而不是字符常量Y的替代。。这是一种特殊规定。希望楼主记住
PRINT(t)=printf("Y=%d\t",t);所以结果必将是Y=(一个值)
又因为
MAX(a+b,c+d)
(a+b)>(c+d)?(a+b):(c+d)
结果是7
所以
结果是Y=7

宏展开就是原样替换,没什么深奥的.

(a+b)>(c+d)?(a+b):(c+d)