搜索
查看: 2089|回复: 5
打印 上一主题 下一主题

define

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-25 14:30:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#define M 2+3
int main()
{
printf("%d",M*M);


return 0;
}
猜猜结果为何define  的宏体若为表达式 或 传参 都会出现很多问题!
沙发
发表于 2013-2-25 20:14:01 | 只看该作者
11
宏只是进行简单的文本替换,不能进行计算
所以处理 #define M 2+3 其实也就是
printf("%d", 2+3*2+3);
所以也就是11

使用自定义宏确实需要十分谨慎

评分

参与人数 1啊哈币 +5 收起 理由
李掌柜 + 5 很给力!

查看全部评分

板凳
发表于 2013-2-26 13:52:17 | 只看该作者
给printf()中M*M 加括号 (M)*(M)
地板
发表于 2013-2-26 18:05:00 | 只看该作者
sycamore1990 发表于 2013-2-26 13:52
给printf()中M*M 加括号 (M)*(M)

一般是 #define M (2+3)
5#
发表于 2013-2-27 17:03:42 | 只看该作者
1.8怎麽直接安c盘啦
6#
发表于 2013-2-28 15:02:39 | 只看该作者
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表