位運算符的陷阱

背景

今天在寫代碼計算二叉樹根節(jié)點右孩子的下標值時,用了如下代碼:

/**
     * 獲取根節(jié)點右孩子的的下標值
     * @param i
     * @return
     */
    private int right(int i) {
        return i << 1 + 1; // 右孩子為右移一位 + 1
    }

當我發(fā)現(xiàn)程序結(jié)果跟我預(yù)期不一樣時,調(diào)試到此處胃惜,發(fā)現(xiàn)right(1)返回的結(jié)果是4!所以借此記錄鼎姐,只有踩坑的方式補基礎(chǔ)知識記憶才比較靠譜钾麸!后來我改成了如下代碼,就完美解決問題了炕桨。

/**
     * 獲取根節(jié)點右孩子的的下標值
     * @param i
     * @return
     */
    private int right(int i) {
        return (i << 1) + 1; // 右孩子為右移一位 + 1
    }

踩坑之后

遇到上面問題之后饭尝,我回顧了下運算符(主要還是位運算符,刻骨銘心)幾點tips:

  • 怕錯就用括號献宫,括號優(yōu)先級是最高的
  • 位運算符優(yōu)先級沒有‘+’(加號優(yōu)先級高)钥平,所以作者上面錯了
  • 因為還用到了三元運算符的嵌套,所以看了下姊途,發(fā)現(xiàn)三元運算符由右向左以(涉瘾?:)為一對進行運算(我想了下,也是有語言自己設(shè)計的道理)捷兰。我用到的代碼如下立叛,可以不用加括號,但是最開始作者怕錯了贡茅,還是把括號加上了(this.arr[i] != INF ? true : false)秘蛇。
/**
     * 檢查一個下標是否魏越界或者是否存儲了實際值
     * @param i
     * @return 在數(shù)組范圍內(nèi)返回true,越界返回false
     */
    private boolean isLegal(int i) {
        return 1 <= i && i <= this.size() ? this.arr[i] != INF ? true : false : false; // 首先判斷數(shù)組下標越界與否顶考,在沒有越界的基礎(chǔ)上還需要判斷是否是有效值
    }

補一張運算符優(yōu)先級的圖赁还,雖然我知道我不怎么會看,便于參考吧驹沿。


運算符的優(yōu)先級.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艘策,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甚负,更是在濱河造成了極大的恐慌柬焕,老刑警劉巖审残,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異斑举,居然都是意外死亡搅轿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門富玷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來璧坟,“玉大人,你說我怎么就攤上這事赎懦∪妇椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵励两,是天一觀的道長黎茎。 經(jīng)常有香客問我,道長当悔,這世上最難降的妖魔是什么傅瞻? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮盲憎,結(jié)果婚禮上嗅骄,老公的妹妹穿的比我還像新娘。我一直安慰自己饼疙,他們只是感情好溺森,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窑眯,像睡著了一般屏积。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磅甩,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天肾请,我揣著相機與錄音,去河邊找鬼更胖。 笑死铛铁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的却妨。 我是一名探鬼主播饵逐,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼彪标!你這毒婦竟也來了倍权?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薄声,沒想到半個月后当船,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡默辨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年德频,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缩幸。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡壹置,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出表谊,到底是詐尸還是另有隱情钞护,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布爆办,位于F島的核電站难咕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏距辆。R本人自食惡果不足惜步藕,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挑格。 院中可真熱鬧,春花似錦沾歪、人聲如沸漂彤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挫望。三九已至,卻和暖如春狂窑,著一層夾襖步出監(jiān)牢的瞬間媳板,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工泉哈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛉幸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓丛晦,卻偏偏與公主長得像奕纫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烫沙,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355