while(num!=q->num&&q!=NULL){ q=q->next; }//q为一个链表
已找到原因,吧q!=NULL和num!=q->num调一下位置就行了。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
&&運算子先計算左邊的表達式,如果為假就直接回傳假,如果為真再計算右邊的表達式。
這不就是短路求值的問題嘛.
作為"&&"和"||"運算子的運算元表達式,這些表達式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱為短路求值(short-circuit evaluation)。這是這兩個操作符的一個重要屬性。
應該先判斷 q 是否為 null, 根據短路求值的規則, 當 q 不為 null 時, 才執行語句 num!=q->num. 這樣就可以避免空指標的問題了.
&&運算子先計算左邊的表達式,如果為假就直接回傳假,如果為真再計算右邊的表達式。
這不就是短路求值的問題嘛.
應該先判斷 q 是否為 null, 根據短路求值的規則, 當 q 不為 null 時, 才執行語句 num!=q->num. 這樣就可以避免空指標的問題了.