编程经验C语言中的宏陷阱 #define SQU(x) x*x
作者:哪吒游戏网 来源:哪吒游戏网 2020-06-19 19:03:34
编程经验C语言中的宏陷阱 #define SQU(x) x*x,哪吒游戏网给大家带来详细的编程经验C语言中的宏陷阱 #define SQU(x) x*x介绍,大家可以阅读一下,希望这篇编程经验C语言中的宏陷阱 #define SQU(x) x*x可以给你带来参考价值。
咳咳咳,今天讲讲C中宏定义(片面),希望对小伙伴们有帮助,开始了:
有同学写过或者想写这样的宏定义吗?
求两个或几个数的乘积: #define SQU(x) x*x
我们正常使用没有问题:
但如果这样写呢?
哎呀,竟然不是100了,难道SQU(10)和SQU(5+5)不等价吗?5+5不是10吗?
的确,这里SQU(10)和SQU(5+5)的确不等价!
原因在于,宏定义的本质是文本替换!所以在预处理期间SQU(5+5)这段代码被宏替换为5+5*5+5,结果因为乘法优先级高于加法,变成5+25+5,可想而知!
那么解决这个问题的办法x陷阱,相信大家看完之后心里应该有答案了,就是给x加个小括号,使它变成一个整体,如下:
就可以解决了。
然而,这并不没有完!
与此类似的x陷阱,当我们想算两个数的和的时候呢?我们继续验证:
正常写,不会触发陷阱,关键没错并不代表没有问题(虽然每个x都加了小括号!)
大家试试这样写:
艾玛! 为嘛不是20*20的400呢?
还是遵循宏的本质,我们展开来看:10+10*10+10=120
又是一个优先级问题,又一个陷阱,防不胜防呀!
那怎么解决呢?答:干脆一了百了,整体全加括号吧!
这么写:#define ADD(x) ((x)+(x))
怎么样,这样写就没问题了!你的宏,从此百毒不侵!
总结:以上内容就是针对编程经验C语言中的宏陷阱 #define SQU(x) x*x详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,编程经验C语言中的宏陷阱 #define SQU(x) x*x部分内容转载自互联网,有帮助可以收藏一下。
上一篇: 亿家QQ农牧场管家二合一
- 1 魔兽世界 考古(魔兽世界考古毁一生?这些装备幻化和坐骑值得你去玩考古)
- 2 普罗霍洛夫(卢布危机下俄土豪大甩卖 卖完豪宅卖球队)
- 3 龙之谷手柄(《龙之谷手游》手柄怎么连接 柄连接教学攻略)
- 4 普罗霍洛夫(俄罗斯土豪准备20亿抛售篮网! 最烂老板是怎样炼成的?)
- 5 天联网(天联网信息科技有限公司怎么样?)
- 6 附魔大师(魔兽世界怀旧服附魔大师在哪 附魔大师位置分享介绍)
- 7 wow烹饪食谱(魔兽世界怀旧服烹饪极品食谱)
- 8 陶谦让徐州(陶谦三让徐州,世界上真有这样的好人吗?)
- 9 lol神圣之剑(LOL如果神圣之剑回归,谁最受益?第1:只要不瞎都能上钻石!)
- 10 陶谦让徐州(陶谦三让徐州的原因是什么?)

机械战警
坦克射击
梦道满V版
火箭精英3d免费版
太古灵诀
小小帝国无敌破解版
厉害了我的娃
乐高无限
侠影双剑九游版