若有宏定义:#define A(x) printf(“%d”,x); #define B(y) A(y); 则执行y=5;B(y)的结果为?
答案:1 悬赏:60
解决时间 2021-01-30 06:54
- 提问者网友:辞取
- 2021-01-29 07:36
若有宏定义:#define A(x) printf(“%d”,x); #define B(y) A(y); 则执行y=5;B(y)的结果为?
最佳答案
- 二级知识专家网友:千杯敬自由
- 2021-01-29 07:50
要明白一点,宏定义没有特殊含义,都是字符串替代的作用,如#define A ab
当使用A的时候,预处理器会把A编程ab,再交给编译器编译。
有的宏有参数,如你说的A(x) 和B(y),预处理器会把使用宏的地方替换的时候把宏代表的字符串里的参数占据的位置也替换为实际的参数。
如你的例子实际会是B(y)代表字符串A(y);
而A(y);又代表字符串printf(“%d”,y);注:x被y替换
所以y=5;B(y)在预处理时会变为y=5;printf(“%d”,y);;
然后再把这给编译器编译的。
当使用A的时候,预处理器会把A编程ab,再交给编译器编译。
有的宏有参数,如你说的A(x) 和B(y),预处理器会把使用宏的地方替换的时候把宏代表的字符串里的参数占据的位置也替换为实际的参数。
如你的例子实际会是B(y)代表字符串A(y);
而A(y);又代表字符串printf(“%d”,y);注:x被y替换
所以y=5;B(y)在预处理时会变为y=5;printf(“%d”,y);;
然后再把这给编译器编译的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯