【发布时间】:2013-01-10 13:13:14
【问题描述】:
想知道如果 next 的值为 NULL(节点是链表),下一条语句是否会导致保护错误和其他可怕的事情。
if (!node->next || node->next->some_field != some_value) {
我假设一旦第一部分为真,OR 的第二部分就不会被评估。我假设这个错了吗?这个编译器是特定的吗?
【问题讨论】:
-
你没有错。
if(ptr && ptr->foo == bar)也很安全。它实际上是许多程序员每天都在使用的代码模式。 -
这被称为“短路评估”,如果您需要一个词来搜索。
标签: c