设有带参数的宏定义: #define F(x,y) x>y?x:y 则执行下列程序段: int a=2,b=5,c; c=4+F(a,b); 后,c的值是_______。
时间: 2024-03-23 10:36:48 浏览: 83
根据宏定义`#define F(x,y) x>y?x:y`,在执行`c=4+F(a,b);`语句时,先将宏展开,即将`F(a,b)`替换为`a>b?a:b`,得到以下语句:
```c
c = 4 + a > b ? a : b;
```
由于运算符优先级,先进行`a>b`的比较,得到结果为`false`,即0。因此,上述语句等价于:
```c
c = 4 + b;
```
将b的值代入即可得到c的值:
```c
c = 4 + 5;
```
因此,c的值为9。
相关问题
设有带参数的宏定义: #define F(x,y) x>y?x:y 则执行下列程序段: int a=2,b=5,c; c=4+F(a,b); 后,c的值是_______。 A. 5 B. 9 C. 6 D. 2
将宏定义代入程序段,得到:
```
int a = 2, b = 5, c;
c = 4 + a > b ? a : b;
```
因为 a > b 不成立,所以 c = 4 + b = 9。因此,选项 B 正确。
阅读全文