一下C语言程序结果为什么是:sum=1

#include <stdio.h>
#define PLUS(A,B) A+B
main()
{
int a=1,b=2,c=4,sum;
sum=PLUS(a,b)/c;
printf("sum=%d",sum);
}

第1个回答  2012-12-07
这是宏替换
这一句是这样理解的
#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啊来自:求助得到的回答
第1个回答  2012-12-07
#include <stdio.h>
#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);
}本回答被提问者采纳
第2个回答  2012-12-07
宏只是替换作用,展开后为 a+b/c
而int类型只保存整数,故结果为1
第3个回答  2012-12-07
#include <stdio.h>
#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);
}
第4个回答  推荐于2017-11-15
宏替换以后的语句是这样的:
sum=a+b/c;
即sum=1+2/4=1+0=1 (两个整数的商仍是一个整数)
所以输出sum=1本回答被网友采纳
相似回答