设有带参数的宏定义:
#define F(x,y) x>y?x:y
则执行下列程序段:
int a=2,b=5,c;
c=4+F(a,b);
后,c的值是。
只要记住, 宏替换 是原样替换就行了,你不要预先去计算宏的表达式,等替换之后再计算
c = 4 + F(a, b);
// 相当于
c = 4 + 2 > 5 ? 2 : 5;
// 由于 + 优先级高于 >
c = 6 > 5 ? 2 : 5;
// 这个时候 6>5 是 真,所以 c = 2
运行效果截图:
代码如下, 如有帮助,给个采纳 ,谢谢
#include <stdio.h>
#define F(x,y) x>y?x:y
int main() {
int a = 2, b = 5, c;
c = 4 + F(a, b);
printf("c = %d\n", c);
return 0;
}