#define N 2 #define M N+1 #define NUM 2*M+1 main() { int i; for(i=1;i<=NUM;i++)printf("%d\n",

#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}n... #define N 2
#define M N+1
#define NUM 2*M+1
main()
{ int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
}num是怎么得来的详细一点
展开
 我来答
chocolatethins
2010-12-02 · TA获得超过231个赞
知道答主
回答量:38
采纳率:0%
帮助的人:32万
展开全部
num=2*m+1=2*n+1+1=2*2+1+1=6
因为定义的时候m=n+1并没有加括号即#define m (n+1),所以在带入后面的式子的时候,也是没有括号的,在计算num的值的时候根据先乘除后加减的原则计算,并非想当然的先计算出m值再带入num,不仅仅在#define中如此,在函数体内部使用到宏定义的数据时,同样根据没有括号的原则~
ChattyKu
2010-12-01
知道答主
回答量:29
采纳率:0%
帮助的人:4.4万
展开全部
NUM = 2*2+1+1
宏只是简单的替代,而并不做运算优先的判断。
就是说N = 2;
M = 2 + 1;
NUM = 2 * (2 + 1) + 1;//括号中的代表N ,但是括号并不起作用
所有NUM = 6
如果想让括号起作用
#define M (N+1)
这样NUM 的结果就不同了
NUM = 7
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式