記錄一次由於運算符優先級錯誤而引發的報錯的緣由和解決方法。spa
今天在寫代碼的過程當中,發現了一個頗有意思的報錯。報錯狀況和出錯的代碼以下圖所示。指針
出錯的代碼行是第34和35兩行。爲何會報錯?很簡單,由於在上述兩行代碼中,點(.)運算先於星號(*)運算執行了。在執行點運算時(array + i)是一個指向結構體的指針,而取指針所指向對象的成員是不能用點運算的。將上述兩行代碼改爲以下形式,問題解決。code
1 (*(array + i)).data = t; 2 (*(array + i)).rank = -1;