c++ - 关于C语言链表的while循环
伊谢尔伦
伊谢尔伦 2017-04-17 14:41:38
0
2
452
while(num!=q->num&&q!=NULL){
q=q->next;
}//q为一个链表

这样写有什么问题吗?经过我不断的debug,基本把错误缩小到这句上,程序也能运行,但是输入一个数赋值给num后,程序会报错。具体表现为程序停止工作。

已找到原因,吧q!=NULL和num!=q->num调一下位置就行了。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
洪涛

&&運算子先計算左邊的表達式,如果為假就直接回傳假,如果為真再計算右邊的表達式。

PHPzhong

這不就是短路求值的問題嘛.

作為"&&"和"||"運算子的運算元表達式,這些表達式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱為短路求值(short-circuit evaluation)。這是這兩個操作符的一個重要屬性。

應該先判斷 q 是否為 null, 根據短路求值的規則, 當 q 不為 null 時, 才執行語句 num!=q->num. 這樣就可以避免空指標的問題了.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板