宏替换
例题:
以下程序的运行结果是()
#define MIN (x,y) (x)<(y) ? (x):(y)
void main() {
int i=10,j=15,k;
k=10*MIN(i,j);
printf ("%d\n",k);
}
答案:15
解析:宏是整个替换,语句k=10* MIN(i,j);在预编译时将进行宏替换为k=10*(i)<(j) ? (i) : (j);。 因i=10,j=15,所以语句等价于k=10* 10<15 ? 10:15;,10*10比15大,因此k的值 将是15。