| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 344 人关注过本帖
标题:编译预处理问题
只看楼主 加入收藏
mrcold
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-4-1
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
编译预处理问题
#include "stdio.h"
#define N 5
#define M1 N*3
#define M2 N*2
main()
{
    int i;
    i=M1/M2;
    printf("%d\n",i);
}
结果是6  求解释!
搜索更多相关主题的帖子: include 
2012-04-05 12:29
songping_lin
Rank: 2
等 级:论坛游民
帖 子:10
专家分:25
注 册:2011-11-21
收藏
得分:4 
这个简单,将#define M1 N*3及#define M2 N*2处的N用小括号括起来即可得到你想要的结果。
原因是宏定义在预处理阶段只是将其值展开。例:(设N为5)
#define M1 N*3
预处理后展开成:5*3
但不做任何运算。
所以你的程序里i的值为:5*3/5*2
按运算符的顺序来计算,得到的结果即为6
2012-04-05 12:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
回复 2楼 songping_lin
不光N要括起来,
#define M1 ((N)*3)

总有那身价贱的人给作业贴回复完整的代码
2012-04-05 14:21
mrcold
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-4-1
收藏
得分:0 
回复 2楼 songping_lin
谢谢!懂了!
2012-04-05 14:51
快速回复:编译预处理问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029777 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved