一道C面试题(#define 宏)

有如下代码:

#define MIN__MY(a,b) ((a)<=(b)?(a):(b))

int main()
{
    int arry[5] = {10,20,30,40,50};
    int *p = &arry[0];
    printf("%d & %d : MIN = %d, *p = %d\n", arry[1], 10, MIN__MY(*p++, 10), *p);
    return 0;
}
输出为多少:
20 & 10 : MIN = 20, *p = 10

程序运行到return时,其实 *p = 30

能理解为什么会是这样吗

猜你喜欢

转载自blog.csdn.net/lc250123/article/details/79469579
今日推荐