友情提示:本文共有 292 个字,阅读大概需要 1 分钟。
想了解更多精彩内容,快来关注lemoontree
今天有同学问了这道题目,感觉挺有意思的,跟大家细讲一下。
不少同学看到这个题目会觉得,这不很简单吗,三个if判断都不成立,数值不变,选D呗。当然这个题目没这么简单,只考一个if判断整这么复杂干嘛。我们之前讲过的C语言带参数的宏定义:#define f(X) ((X)*(X)),不知道你收获了多少?根据宏定义,上面的程序应该替换为:
其实这样写还不够明了,我们再来改一下:
有同学说:唉,老师你这意思不对了?
老师:那里不对了呢,这修改前后意思不是一样的吗?
同学:那一开始就不对了,if后面3个赋值语句应该用个大括号括起来。应该是这样:
if(x 老师:你说的少一对大括号确实是不少同学写程序时候犯的错误。但是这个题目意思跟你们想的不一样。宏定义只是简单、机械字符替换,定义没有括号,替换也没有括号。之前讲过的C语言带参数的宏定义:#define f(X) ((X)*(X))还要再复习一遍。 接下来就是按照步骤,一步步把数值的变化写出来了。我们写在上面注释里了。 注意:这里不要偷懒,一定要一步步地写出来。有同学说我口算一下就好了,没几步。中间很容易哪一步没仔细就使用了之前的值。结果没算对就打脸了。 这个题目如果我们放在C语言带参数的宏定义:#define f(X) ((X)*(X))里面讲解,估计多数同学都能想到作对。考试就是这样,问这个知识点你可能是记得的,但是看到题目却不一定想到它。多刷题练练感觉也是很重要的。 C语言带参数的宏定义:define f(X) ((X)*(X))
本文如果对你有帮助,请点赞收藏《C语言:if选择结构与宏定义》,同时在此感谢原作者。