C语言编译预处理#define(x,y)语句中x*y 、(x)*(y)、(x*y)的问题

题目代码如下

# include
# define MUL1(x,y)x*y
# define MUL2(x,y)(x)*(y)
# define MUL3(x,y)(x*y)
main(){
	int m=2,n=3;
    printf("%d\n", MUL1(m,m+n)*5);
    printf("%d\n", MUL2(m,m+n)*5);
    printf("%d\n", MUL3(m,m+n)*5);
}

请预测输出的三个数值

结果为19,50,35

是不是人傻了,我在网上找半天都没找到解析,烦的一批,只好自己探究规律了。

经过几分钟的研究,我结合能找到的资料大致推测出计算规则如下

# define MUL1(x,y)x*y

printf("%d\n", MUL1(m,m+n)*5);

这一组语句可以理解为x*x+y*5

# define MUL2(x,y)(x)*(y)

printf("%d\n", MUL2(m,m+n)*5);

这一组语句可以理解为x*(x+y)*5

# define MUL3(x,y)(x*y)

printf("%d\n", MUL2(m,m+n)*5);

这一组语句可以理解为(x*x+y)*5

我也不是太懂,如果有大佬看到,麻烦在评论区给大家普及一下

你可能感兴趣的:(C语言小题目合集,c语言,开发语言,后端)