在 给定的准则之下,总有一些奇葩非主流的写法,遇到的时候总会有些蛋疼,尤其是调bug的时候,随意我把我遇到的总结一下,确认其正确性。
当然,自己写代码不推荐这样,首先严谨性不行,第二是可能会给阅读拟代码的人带来困扰。实时更新!
(1)今天看linux源码,看到一个三目运算符,但是并没有 结果一
标准 : a? 结果1:结果2
代码可用和正确性当然不用说啦,这可是源码,保险起见,试验了一下,没有结果1,就默认为a
这里提一下,感觉这一点懒偷了完全没有必要啊,不太懂。
三目条件运算符?:操作符能使编译器产生比if-then-else更优化的代码,冲这一点,可以借鉴,这点的原理可以从汇编角度看,三木运算符的代码不需要jump,而 if else 需要。
在执行指令的过程中会充分地利用流水线技术来增加程序的并行化,但是如果遇到了跳转指令,例如if-else语句,那么就有可能会清空流水线,导致执行效率降低。所以说没有跳转的指令(三目运算)能比有跳转的指令(if-else)更加优化。
(2)经常会看到在 判断语句中赋值 ,了解一些的还好,不然就傻傻分不清了,是故意为之,还是大意为之 就很难分辨了,所以可能的话,赋值操作尽量不要放在判断语句中。
(3)对于for 语句,经常会有 空语句,这个没有问题啦,写下来告诉自己,你也可以这样干哦,出乎意料的方便呢。
(4)某天在C语言中看到这样一种参数形式 , int a:1;char b:3;int c:23;
这个其实是很方便的参数形式,我们有很多时候只需要几个比特位来代表某个参数(很多协议里面都是这样),如果你蠢萌蠢萌的靠位运算来实现那就很蛋疼了。为了节省空间方便程序员,C标准提供了 位域 这种形式,相关细节可以百度一下,以后看到这个就不用发蒙了
阅读(1652) | 评论(0) | 转发(0) |