设有带参数的宏定义: #define FUN(a, b)a<b?a:b则执行下列程序段: int x=5, y=8, z; z=4+FUN(x, y) ; 后,z的值是_ A. 5 B.9 C. 8 D.13 上一题 下一题查看答案C 窗口切换
时间: 2023-07-14 18:14:06 浏览: 101
将宏定义展开后,程序段变为:
```
int x = 5, y = 8, z;
z = 4 + x < y ? x : y;
```
由于优先级问题,`<` 运算符的优先级高于 `?:` 运算符,因此上述语句等价于:
```
z = (4 + x) < y ? x : y;
```
因为 `4 + x` 的结果为 9,大于 `y` 的值 8,所以 `y` 被选择。所以最终 `z` 的值为 12。答案为 D. 13。
相关问题
23.设有带参数的宏定义: #define FUN(a,b) a<b?a:b 则执行下列程序段: int x=5,y=8,z; z=4+FUN(x,y); 后,z的值是_______ A. 5 B. 9 C. 8 D. 13 标准答案:C
根据宏定义,`FUN(a,b)`被展开为`a < b ? a : b`。因此,`z`的赋值语句可以展开为`z = 4 + (x < y ? x : y)`。
根据程序中的变量定义,`x`的值为`5`,`y`的值为`8`。因此,`x < y`为真,`x < y ? x : y`的值为`x`,即`5`。因此,`z`的值为`4 + 5`,即`9`。因此,选项B是正确答案。
所以,答案是B。
设有带参数的宏定义: #define F(x,y) x>y?x:y 则执行下列程序段: int a=2,b=5,c; c=4+F(a,b); 后,c的值是_______。
根据宏定义`#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。