C语言优先级在嵌入式编程中的重要性
来源:互联网 发布:windows 运行指令 编辑:程序博客网 时间:2024/05/20 07:17
C语言优先级在嵌入式编程中的重要性
最近在弄PIC的一个小项目,之前是前一个同事在原有程序的基础上经行了代码的优化,同时添加了一点新的功能,由于PIC单片机的容量还是相对较小,所以不得不把众多的ADC转换的函数整合到一个函数里,同时又有8位和10位的AD转换功能。
在程序里需要用到C语言里的位运算,PIC16F87x单片机的AD转换默认是10位的,而pic单片机是8位单片机,所以需要两个8位寄存器来存储AD转换的值,并通过ADFM位来设置其左对齐还是右对齐,然后在程序里读取AD转换后的值,读取数值的时候,就要用到位移的运算:
Ret_val=((ADRESH&0x03)<<8) +ADRESL; 当然这个是正确的,我这里加了括号,完全没问题,Ret_val是unsigned int类型的,可是之前的同时是这样写的:((ADRESH&0x03)<<8 +ADRESL);貌似没错啊,可是在C语言里“+”的运算符比“<<”的优先级高,所以他会先进行ADRESH&0x03,而后在8+ADRESL,最后在(ADRESH&0x03)<<(8 +ADRESL),和我们设想的完全不同了,从而到时读到的值就是错误的,害得我弄了两个晚上,幸好我留意了这个语句。
总结:在C语言里,倘若程序员很清楚的知道运算符的优先级,这个自然好,但是如果有点模糊,那就很有可能要出错了,那就去看看C语言书,最保险的是加上括弧,那样也是没有问题的。记住:在嵌入式里位运算运用的还是很广泛的,所以切记切记!~
- C语言优先级在嵌入式编程中的重要性
- C语言优先级在嵌入式编程中的重要性
- C语言中的优先级
- 测试在嵌入式软件中的重要性
- C语言在嵌入式中的地位
- 截取《C专家编程》中的语言声明优先级规则
- 嵌入式C语言编程
- C语言嵌入式编程
- C语言对编程学习的重要性
- c语言中的符号优先级
- c语言中的运算优先级
- C语言中的位运算在嵌入式中的应用
- 嵌入式开发:中断优先级的重要性
- 如何学好嵌入式系统中的C语言编程
- C语言嵌入式系统编程修炼(经典中的经典)
- C语言在嵌入式系统编程时的注意事项1
- C语言程序运行在嵌入式中的方式
- IIR滤波在嵌入式系统中的C语言代码实现
- C算法精解-----哈希表(2)
- windows内存池 一线程分配 一线程释放 无锁 安全?
- 构建ASP.NET网站十大必备工具
- ie6 a hover 属性失效解决办法
- [Eclipse]How to export eclipse rich client application?
- C语言优先级在嵌入式编程中的重要性
- 跟我一起写Makefile:书写命令
- ELMAH(ASP.NET错误日志记录与通知)系列文章-概念篇
- ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
- MPLS/VPN 实验: ISIS/EIGRP
- OOP语言技术比较:Java,C++,Object Pascal
- ELMAH (ASP.NET错误日志处理)使用方法
- GIS坐标系与地图投影
- 如何增加你的生产力