NULL检查单个if语句中的嵌套指针

时间:2015-05-25 02:44:07

标签: c if-statement

Struct {
    int a;
    struct sample *b;
} test;

int func(struct test *t1) {
  if (!t1 || !t1->b) {  // Is this statement ok?
    return _EINVAL
  }

  ...
}

在单个if语句中检查嵌套指针是否可以?我是否可以始终假设左检查(在我的示例中为!t1)将首先执行?

1 个答案:

答案 0 :(得分:7)

是的,C的语言规则保证如果a中的表达式a || b为真,则永远不会评估b。 (如果a && b评估为false,则a也存在类似的规则。)这称为short-circuit evaluation