以下程序执行的输出结果是( )。 #define MIN(x,y)(x)

admin2014-10-20  5

问题 以下程序执行的输出结果是(    )。
#define MIN(x,y)(x)<(y)?(x):(y)
main(    )
{
  int i,j,k;
  i=10;j=15;
  k=10*MIN(i,j);
  printf(“%d\n”,k):
}

选项 A、15
B、100
C、10
D、150

答案A

解析 宏展开就是简单的字符串替换。语句k=10*MIN(i,j),经过宏展开为k=10*(i)<(j)?(i):(j)。由于*号的优先级要高于<号的优先级,因此要先进行10*(i)的运算,把值带入宏展开式为k=10*10<157 10:15,条件表达式的值为15。所以选项A是正确的。
转载请注明原文地址:https://kaotiyun.com/show/mwvR777K
0

最新回复(0)