编程之各种奇技淫巧

当众生踏上这条路,眼前是一片迷雾,只因为Bug太多,各种奇技淫巧小W早已见怪不怪,这里就给大家分享下。



判断一个数n是否是2的幂(n为正整数)


最朴素的想法就是不断取余和除2,看看能不能到1:



高级一点的,编程之美上提到过一种位运算的解决办法:



奇技淫巧:



什么?这样也可以?不管你信不信,回去试试就信了(至于为什么可以在搜狗测试公众号里和小W讨论或者等下周同一时间小W来揭晓)。


经典面试题不开空间交换两个整数的值

这里就不一一贴代码,最简单就是加法,不过有溢出的风险现在去面试的孩子基本都都不用了。


然后就是曾经很经典现在已经烂大街异或用法,这个大家应该也很熟悉,这时可能有人会有疑问难道这个还有什么别的巧法?


抱歉这里小W智商不够见识面也还不够广真心不知道,那要说什么呢?这里要讲的是一位童鞋的写法:




看到这小W也是醉了泥煤你还真能节约纸张啊。不过不建议各位童鞋采用这种写法否则被老大直接从窗户扔出去本人概不负责不好懂不说还不符合标准c++的规范同一变量在一个语句中被改变了两次)。


等等到这还不算完,有童鞋就告诉我他有更简单好懂的方法,而且用加法就可以,纳尼小W又要涨见识了,下面就看看这位童鞋的大作:




这。。。我就不多说什么呢,但愿你不会被老大从窗户扔出去。不知道这位童鞋用的什么编译器,反正正常环境下是不可能起到交换作用的,可能是比较高端的人脑编译吧。


好了,为了避免大家地铁做过了站或者影响了睡眠时间,这里就不多说了,留给大家一个思考题吧:


在标准编译环境下

int b = 5;

(++b) + (++b) + (++b)

结果是多少?

不要急着回答我,回去在VS上试试(友情提醒,学过数据结构的可以回忆下当时的那个运算符优先级的实验)。

欲知后事如何,请关注搜狗测试公众号,下次再给大家分享~



原文链接

如需转载该篇文章,请注明来自“搜狗测试”


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值