Struct {
int a;
struct sample *b;
} test;
int func(struct test *t1) {
if (!t1 || !t1->b) { // Is this statement ok?
return _EINVAL
}
...
}
在单个if语句中检查嵌套指针是否可以?我是否可以始终假设左检查(在我的示例中为!t1)将首先执行?
答案 0 :(得分:7)
是的,C的语言规则保证如果a
中的表达式a || b
为真,则永远不会评估b
。 (如果a && b
评估为false,则a
也存在类似的规则。)这称为short-circuit evaluation。