c语言的宏定义

[复制链接]
查看11 | 回复0 | 2009-12-6 19:48:38 | 显示全部楼层 |阅读模式
因为预编译仅是简单的替代而已,在处理宏的过程中需要把原表达式代入后再进行计算.因此你的第一项展开后应该是(10+1)*(10+1),等于121;而第二项实际上却是这样的:10+1*10+1,等于21;第三项和第二项相同. 给你一个简明的例子,你就明白了.若有宏定义如下:#define
X
5#define Y
X+1#define Z
Y*X/2则执行printf("%d\n",Z); 语句后,输出结果是 原表达式展开后即5+1*5/2,所以最终结果就是7 http://zhidao.baidu.com/question/55107306.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行