鱼C论坛

 找回密码
 立即注册
查看: 4464|回复: 4

关于#define命令

[复制链接]
发表于 2012-12-27 08:44:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
直奔主题!
例如
#define M(x) x*x                               //这一行x*x没有括号正常优先级运算

int a;
s = f( 1+3);
printf("%d",s);                                 //结果等于7为什么?

s = f( 1+3+3);                                  //结果等于9为什么?
printf("%d",s);


虚心请教各位大哥
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-27 10:07:00 | 显示全部楼层
问之前最好自己先调过代码。。。宏定义和后面你调用函数不一样呀。。。现在来解决你的问题  
s = f( 1+3)经过宏定义的转化后变成了s=1+3*1+3自己算。。。后面的答案不是9.。。。  是13。。为什么呢? 因为1+3+3*1+3+3就等于13;宏定义是按照定义的格式转化的如果想达到平方的效果,应该定义为f
(x)=(x*x)

评分

参与人数 1鱼币 +5 贡献 +5 收起 理由
洗脚水煮饺子 + 5 + 5 谢谢你Gw_love_VC.的解答,,我很满意

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-12-27 11:01:43 | 显示全部楼层

谢谢您的解答,大哥您解答太清楚了,真是一针见血,,其实你后面说的我明白啥意思,我当然不是把他当函数用,,如果要用也要带参数,,还要考虑优先级啊!我想非常感谢你,,嘿嘿,,原来优先级是这么来看的啊..以后得常来论坛罗
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-12-27 11:02:19 | 显示全部楼层
Gw_love_VC. 发表于 2012-12-27 10:07
问之前最好自己先调过代码。。。宏定义和后面你调用函数不一样呀。。。现在来解决你的问题 ...

这个我试过了,,是一道考题,,我编译过试了的,但是不好调试
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-27 13:38:07 | 显示全部楼层
可以问下你那个f是什么吗
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-13 00:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表