不好编程习惯挖的坑——优先级
来源:互联网 发布:上海迈博软件 编辑:程序博客网 时间:2024/06/06 20:28
作为程序猿,一直就是在不断的填坑和不断的挖坑中度过的。你填过哪些前辈们挖过的坑?你又挖过哪些坑?
前两天我就遇到了一个资深前辈挖的坑,定位了两三个小时才找到问题所在。
代码想要实现的功能是这样的,如果A的第1位为1则进入if条件,代码是这样子的:
if(1 == A&0x01)
{
....
}
这个代码有什么问题?看起来没有毛病啊,可是怎么也进不了if语句,抓狂!!难道是我眼花了,难道是系统有问题,这么简单的一行代码,都要搞得怀疑人生了。
没办法,只好先打印A的值试试。什么!不是等于1是等于2,对哦,第1位为1,当然是等于2咯。于是代码改成:
if(2 == A&0x02)
{
....
}
哈哈,这下终于被我解决了吧,没毛病!
What!还是进步了if判断语句中。聪明的你知道为什么了吗?
没错,这么简单语句里只存在优先级的问题了,一查优先级表格,==的优先级高于位与&,这么多年白学了,在大部分的印象里,位与“&”的优先级很高,==的优先级很低,然而这么一个自以为是的以为,就白白浪费了一个下午的时间。大概是因为取地址“&”的优先级很高,所以大家就对“&”的印象停留在高优先级的概念里,然而此“&”非彼“&”。
如果养成好习惯给判断的右边不管认为优先级高还是低都通通加上等号,那么就不会再给自己给别人挖坑了。
因此,在任何超过二元的运算中,都要加(),避免出现简单又难查的问题。K&D的经典书里面就提过这个,但实践起来总会有人忘记。切记切记!
0 0
- 不好编程习惯挖的坑——优先级
- 不好的编程习惯引发的麻烦
- 编程习惯[好]与[不好]
- 编程习惯的重要性—
- 自己需要改掉的不好习惯
- 纠正几个不好的工作习惯
- 不好的MySQL过程编写习惯
- 不好的编码习惯(待续)和好的编码习惯
- 我的iOS高效编程秘诀—坚持编程习惯
- iOS高效编程秘诀—坚持好的编程习惯
- 我的iOS高效编程秘诀—坚持编程习惯
- 我的iOS高效编程秘诀—坚持编程习惯
- PHP程序员的40点不好的习惯
- Linux驱动开发中常见的几个不好的习惯
- 编程习惯的养成——转自知乎
- linux下C语言多线程编程实例——经典实例写的不好
- JavaScript代码不好读,不好维护?你需要改变写代码的习惯
- 为什么学不好编程?——好文章一网打尽
- 修改时,select根据参数自动选择其中某项
- [PAT-乙级]1008.数组元素循环右移问题
- 1092: 回文数(一)
- [BZOJ]3747: [POI2015]Kinoman 线段树
- Unity 截屏 录屏 并且保存到 iOS相册
- 不好编程习惯挖的坑——优先级
- 使用ajax模拟用户名是否被占用
- LNMP环境给PHP安装APC扩展模块
- C语言名企面试题2
- Python正则匹配
- vue.js 过滤器传参数及接收
- hbase系统架构
- 二分+最小生成树
- nlogn求最长上升子序列 (POJ2533)