C语言宏计算题

碰到个C语言宏的计算问题,求大佬指点..
题:

#include <stdio.h>
#define M 2<3 ? 5:6 

int main() {
    int i=3, j, k;
    j=i+M;
    k=i+(M);
    printf("%d,%d\n", j, k); 
    return 0;
}

答案是6,8,为什么是6,8啊? M是5,i是3,第一个应该是8啊,为什么会是这个结果呢?

阅读 2.4k
2 个回答

题目本身已经提示的很明显了吧,就差把答案直接告诉你了!

结果是6,8,宏只负责替换,不负责计算。即j=i+M = 3+2<3 ? 5:6 =5<3 ? 5:6 = 6, 第二个结果为8