关于#C语言#的问题,如何解决?

设有带参数的宏定义:
#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

运行效果截图:

img

代码如下, 如有帮助,给个采纳 ,谢谢

#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;
}