问题
问答题
[说明]
嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。
图5-1所示代码的设计意图是计算1~100个数的平方。该段代码运行后,没有得到应有的结果,请说明出错原因,将答案填入答题纸的对应栏内。
图5-2是在不改变宏定义的情况下,对程序进行修改。请完成该段代码,将答案填入答题纸的对应栏内。
答案
参考答案:
出错原因:
在宏定义中,参数a使用两次,而在引用宏时,使用了i++,从而导致出错。
①i
②i++或i=i+1或++i或i+=1
解析:
对问题2中的代码进行宏展开之后,计算平方的语句为result=SQUARE((i++)*(i++)),这里使用了两次“i++”表达式,单次循环两次使用i++显然不是该程序的初衷。所以不能得到期望的结果,应该避免两次i++的使用。