今天在做爱奇艺笔试的时候,有一个选择题大概如下:
#define mul(x, y) ++x*y++
int main() {
int a = 2;
int b = 4;
int c = 8;
printf("%d", mul(a + b, b + c));
return 0;
}
问:输出是多少?
27
那么是怎么来的呢?其实这里考察的是define
的使用,define
定义的宏只是简单的文本替换,所以mul(a+b, b+c)
等价于++a+b*b+c++
,这样就知道结果了。计算步骤如下:
- ++a,a=3;
- b * b,4 * 4=16;
- a + b * b + c,3+4*4+8=27;
- c++,c=9。