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. 这样就可以避免空指针的问题了.