这是宏替换
这一句是这样理解的
#define PLUS(A,B)A+B
将PLUS(A,B)照原样替换,即为A+B
再到sum=PLUS(a,b)/c;中替换,为:
sum=a+b/c;(注意宏替换是原样替换)
这样sum=1+2/4
因为sum=%d指的是输入输出为整形
当然sum==1啊
#include
#define PLUS(A,B) A+B
main()
{
int a=1,b=2,c=4,sum;
sum=PLUS(a,b)/c;//根据定义的宏,此行展开成sum=a+b/c; b/c转成int型为0,则sum=1+2/4=1+0=1
printf("sum=%d",sum);
}
宏只是替换作用,展开后为 a+b/c
而int类型只保存整数,故结果为1
#include
#define PLUS(A,B) A+B
main()
{
int a=1,b=2,c=4,sum;
sum=PLUS(a,b)/c; // PLUS(a,b)/c = A+B / c = a + b / c , 整数除法2 / 4 等于 0 , 1 + 0 等于1,
//所以sum = 1
printf("sum=%d",sum);
}
宏替换以后的语句是这样的:
sum=a+b/c;
即sum=1+2/4=1+0=1 (两个整数的商仍是一个整数)
所以输出sum=1