#c语言# define


#include <stdio.h>
#define M(x,y)x%y
int main()
{
    int a = 3, b = 3, n;
    n =4/M(a + 1, b);
    
    printf("%d", n);
    return 0;
}

请问 M(a+1,b) 不是等于 3+1 % 3 = 4 吗?
为什么最终 n = 2?

要注意括号的顺序,M宏扩展后是:
n = 4 / a + 1 % b; 也就是 n = 4/3 + 1%3 = 1 + 1 = 2
不是 n = 4 /( (a+1)%b); 也就是 n = 4 / (4%3) = 4