#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?
#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