问题 问答题

[说明]

嵌入式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++的使用。

填空题
判断题