做下这道C语言题?

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:20:21
#define M(x,y) x%y
main()
{
int a,m=12,n=100;
a=M(n,m-1);
printf("%d",a--);
}
答案为什么是3
没看懂啊,为什么 100 % 12 - 1 = 3
应该是=100%11=1啊

#define M(x,y) x%y
main()
{
int a,m=12,n=100;
a=M(n,m-1);
printf("%d",a--);
}
代码可分解成如下:
a= n % m - 1;// 100 % 12 - 1 = 3
printf("%d",a);//所以输出结果是3
a--;

因为a=M(n,m-1);扩展开是a=n%m-1
而不是a=n%(m-1)
所以一般宏定义的变量要加括号,一般写为
#define M(x,y) ((x)%(y))
就绝对不会出错了