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

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

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

伊谢尔伦
伊谢尔伦

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

全部回复(2)
PHP中文网

&&操作符先计算左边的表达式,如果为假就直接返回假,如果为真再计算右边的表达式。

PHPz

这不就是短路求值的问题嘛.

作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值(short-circuit evaluation)。这是这两个操作符的一个重要属性。

应该先判断 q 是否为 null, 根据短路求值的规则, 当 q 不为 null 时, 才执行语句 num!=q->num. 这样就可以避免空指针的问题了.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号