![单片机C语言程序设计实训100例:基于STC8051+Proteus仿真与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/270/43738270/b_43738270.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.8 关于C语言运算符的优先级
设计8051单片机C语言程序时,涉及大量表达式的编写,对于多种类型运算符组合的表达式,要注意它们的优先级。表1-11给出了标准C语言运算符优先级,可作为阅读全书源程序及进行编程实践时的参考资料。例如,为判断从P1端口读取的低3位引脚信号是否全为“1”,可用如下语句:
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-37-2.jpg?sign=1739312068-PNw2nGrK0U7HWjUj8D0mTJXXc7uZjJTd-0-6ad9c65ad0324f831497d87cbcdd18a9)
如果将上述语句误写成:
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-37-3.jpg?sign=1739312068-HtavaPyGLT7Ma1QXHBHvWixEhVG1IM4Y-0-f1ab3f477356df6378e9e503b5dfef5e)
在编译时不会提示任何错误,因为该语句的语法是正确的,但显然未实现所要求的目标。因为由表1-11可知,位运算符“&”的优先级低于关系运算符“==”的优先级,故要将“P1 & 0x07”单独添加“()”以提升其优先级。
表1-11 标准C语言运算符优先级
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-37-4.jpg?sign=1739312068-ozhwB7yjhpbqnbutHbnXHxNGVqBKV5Hk-0-c93bc09406b93651e17cd043926617bf)
续表
![](https://epubservercos.yuewen.com/DF9E4A/23020648309755406/epubprivate/OEBPS/Images/42553-00-38-1.jpg?sign=1739312068-KLblUxjsmtuMfsPoy0n3GJgrB7udcrCg-0-c79ed6c9399934f89986a209a7c04f89)