程式設計之各種奇技淫巧
當眾生踏上這條路,眼前是一片迷霧,只因為Bug太多,各種奇技淫巧小W早已見怪不怪,這裡就給大家分享下。
判斷一個數n是否是2的冪(n為正整數)
最樸素的想法就是不斷取餘和除2,看看能不能到1:
高階一點的,程式設計之美上提到過一種位運算的解決辦法:
奇技淫巧:
什麼?這樣也可以?不管你信不信,回去試試就信了(至於為什麼可以在搜狗測試公眾號裡和小W討論或者等下週同一時間小W來揭曉)。
經典面試題不開空間交換兩個整數的值
這裡就不一一貼程式碼,最簡單就是加法,不過有溢位的風險現在去面試的孩子基本都都不用了。
然後就是曾經很經典現在已經爛大街的異或用法,這個大家應該也很熟悉,這時可能有人會有疑問難道這個還有什麼別的巧法?
抱歉這裡小W智商不夠見識面也還不夠廣真心不知道,那要說什麼呢?這裡要講的是一位童鞋的寫法:
看到這小W也是醉了,泥煤你還真能節約紙張啊。不過不建議各位童鞋採用這種寫法,否則被老大直接從窗戶扔出去本人概不負責,不好懂不說還不符合標準c++的規範(同一變數在一個語句中被改變了兩次)。
等等到這還不算完,有童鞋就告訴我他有更簡單好懂的方法,而且用加法就可以,納尼小W又要漲見識了,下面就看看這位童鞋的大作:
這。。。我就不多說什麼呢,但願你不會被老大從窗戶扔出去。不知道這位童鞋用的什麼編譯器,反正正常環境下是不可能起到交換作用的,可能是比較高階的人腦編譯吧。
好了,為了避免大家地鐵做過了站或者影響了睡眠時間,這裡就不多說了,留給大家一個思考題
在標準編譯環境下
int b = 5;
(++b) + (++b) + (++b)
的結果是多少?
不要急著回答我,回去在VS上試試(友情提醒,學過資料結構的可以回憶下當時的那個運算子優先順序的實驗)。
欲知後事如何,請關注搜狗測試公眾號,下次再給大家分享~
如需轉載該篇文章,請註明來自“搜狗測試”