優先順序引起的錯誤(括號還是很有用的)。

2021-06-02 01:19:22 字數 784 閱讀 9676

前幾天自己寫了一段bcd的求和函式,

一次加了四個資料。

結果測試時,發現結果錯的一塌糊塗,分析了半個小時,最後得出的結論是這種寫法有問題。

但錯在**,很真不知道。

只好拆開來計算,結果就是對的。後來同事提醒說是不是括號出問題了。

如夢方醒,

再看下程式,

發現&,>>運算和+一起運算,卻沒有括號改變運算順序,

這不出錯也難。

後來改正後,

再測試和之前單個相加,也一樣了。

乙個括號,釀成的悲劇。

所以在多優先順序運算時,像《c專家程式設計》裡講的還是加上括號好些,

也不用去考慮因為優先順序不對出現的錯誤了,至少避免的錯誤出現的可能性。

最近在檢查**時,又發現早前犯下的因為優先順序造成的錯誤,趕緊改過來了。

看來以後寫的時候,括號還是加上為妙。有時候可能會看起來複雜,

但是很容易分清,每一部分的作用,也不用去背優先順序,雖然有些取巧,

但確實能避免不少的bug。

測試**如下(分開相加):

int bcd2sum(unsigned char * disdata, unsigned char * srcdata)

return i;

}

加上括號的情況:

int bcd2sum(unsigned char * disdata, unsigned char * srcdata)

return i;

}

C中括號優先順序的思考

問題源於論壇的一道題目 下面是問題 設int arr int ptr arr ptr 123 printf d,d ptr,ptr 答案為什麼是 8,8 問題的焦點也落在printf執行的問題上,到底先執行誰,後執行誰,還有部分有才青年將該問題中庸化,覺得跟編譯器有關。執行的順序真的跟編譯器有關嗎?...

的優先順序大小 需求價值與優先順序

我們會接到不同 的需求,有的 於業務部門 領導要求,有的 於使用者反饋 線上問題,有的是市場反饋建議,或者競品已支援等等。收到原始需求之後,我們怎麼知道哪些需求要做?哪些需求要優先做,哪些可以往後排?或者在需要澄清需求價值時,我們要回答哪些問題後,才算講清楚了需求價值。又如何做需求的優先順序排序。首...

sql指令碼中的優先順序(and or 和 括號)

二月初三辛丑年 牛辛卯月 壬戌日 好多天沒更博了,為啥呢,因為我的需求上線了,然後又被bibibi了,其中各種心酸背鍋以及瑟瑟發抖。天吶 回來繼續說,今天乙個sql的修改 需求是這樣的 在乙個日期範圍內 2020 03 01至2021 03 12 查詢人員型別為 1003 1004 1006 的資料...