【问题标题】:NULL check for nested pointers in a single if-statementNULL 检查单个 if 语句中的嵌套指针
【发布时间】:2015-05-25 02:44:06
【问题描述】:
Struct {
    int a;
    struct sample *b;
} test;

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

  ...
}

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

【问题讨论】:

    标签: c if-statement


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多