请教一题c语言的题,为什么要+4不是+2

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

习题2-4 求交错序列前N项和

输入在一行中给出一个正整数N。

在一行中输出部分和的值結果保留三位小数。

}
1》事情缘由:今天遇到一个bug调試了大半天,最终锁定是字节对齐问题但具体细节尚不清楚,请路过的大神帮忙指教谢谢。
3》详细细节:本来程序是可以通过运行的”手抽“将数组调动位置(由于调动位置,导致数组buf[]的起始地址开始满足4字节对齐后来仅仅满足2字节对齐)。于是开启漫长的debug。
4》实际代码:删除部分无关代码,浓缩如下:
5》运行效果:如果注释掉aaa[]数组程序正常执行;如果不注释掉aaa[]数组(注意:此时buf[]起始地址不滿足4字节对齐),程序执行到下述位置直接进入HardDefualt!!!

6》个人理解1:buf[]数组是uint16类型,因此系统默认会让buf[]数组满足2字节对齐是否满足4字节對齐则是随机的。
7》个人理解2:由于Cortex-M3/M4默认是支持非对齐访问的(无外乎是多浪费几条指令将非对齐最终转换为对齐访问),所以不明白此段代码为什么会进入HardDefualt恳请指教,感谢!!!
}

我要回帖

更多关于 c语言的题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信