设有宏定义:&define MUL(x,y)x*y则宏调用MUL(2+3,5)的结果为17? 我来答 2个回答 #热议# 为什么说不要把裤子提到肚脐眼? 创作者2cKODrksbU 2019-10-09 · TA获得超过3.6万个赞 知道大有可为答主 回答量:1.2万 采纳率:30% 帮助的人:822万 我也去答题访问个人页 关注 展开全部 是的。造成这种结果的原因,是由于宏定义本身的特性造成的:define仅仅是字符替换,因此在将NUL(2+3,5)时,x是2+3,y是5,直接将表达式x*y替换字符后,则变成了2+3*5,其计算结果在乘法优先于加法的作用下会得到17这个数值。为了避免这种情况,有两种办法解决1.定义更安全的宏定义,即使用括号将表达式括起来,避免了优先级在替换后变化。defineMUL(x,y)(x)*(y)2.将宏定义改变为函数intMUL(intx,inty){ return(x*y);} 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 创作者V8X0QZSDiH 2019-03-24 · TA获得超过3.6万个赞 知道小有建树答主 回答量:1.4万 采纳率:35% 帮助的人:862万 我也去答题访问个人页 关注 展开全部 是的MUL(2+3,5)=2+3*5=17MUL((2+3),5)=(2+3)*5=30#define只是字符替换而已,#defineMUL(x,y)x*y只是在预编译时将字符MUL(x,y)替换为x*y,所以MUL(2+3,5)就替换成了2+3*5再看看别人怎么说的。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询 其他类似问题 2018-03-10 设有宏定义:&define MUL(x,y)x*y则宏调用MUL(2+3,5)的结果为17? 20 2018-03-20 设有宏定义#define MAX(x,y) (x)>(y)? (x):(y),则F=4*MAX(2,3)的值为()。 46 2013-06-22 若宏定义为:#define y(x) 2+x,则表达式a=3*y(3)的值为 3 为你推荐: