6. 以下程序的输出结果是 C #include<stdio.h> #define MAX(x,y) (x)>=(y)?(x):(y)

6. 以下程序的输出结果是 C
#include<stdio.h>
#define MAX(x,y) (x)>=(y)?(x):(y)
main()
{ int i=10,j=15;
printf("%d",10*MAX(i,j));
}
A. 15 B. 100
C. 10 D. 150
为什么选C?

    首先要清楚 #define 宏定义并不会有任何的计算发生,只是单纯的将替换文本其看成字符串

如下

#include <stdio.h>
#define A 3+3
int main()
{

    printf("%d",A*A);

    return 0;
}

结果是15  原因是宏定义并非计算A为3+3的值,而是仅仅将‘3' ,'+' ,'3'字符串赋给A

输出的结果即为3+3*3+3=15

2.本题中

#define MAX(x,y) (x)>=(y)?(x):(y)

将替换文本  (x)>=(y)?(x):(y)  赋给  MAX(x,y)

printf("%d",10*MAX(i,j));

输出即为  10*x >= y? x: y    10*x = 100  大于 15  输出 x ,即为 i  等于 10

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-03
把10*MAX(i,j)中的MAX(i,j)用(x)>=(y)?(x):(y)代替就是10*(x)>=(y)?(x):(y),代入数据:10*(10)>=(15) ? (10) : (15),结果就是100>=15 ? 10 : 15,显然整个表达式的值是10。所以C正确。
相似回答