C - 条件陈述& strcmp&空字符串

时间:2010-11-10 02:42:49

标签: c null strcmp

做以下事情会有多安全:

if (flag_val != NULL && strcmp (val, flag_val) == 0) {
   // something
} else {
   // something else
}

知道有时flag_val将是NULL,有时不会。

我知道它会首先检查flag_val != NULL,如果评估为假,它不应该检查第二个条件吗?

由于

2 个答案:

答案 0 :(得分:8)

正确,如果flag_val为NULL,那么&&操作员会短路。只要其他线程无法更改flag_val,这就是安全的代码。

答案 1 :(得分:1)

如果flag_val != NULL的计算结果为false,即flag_valNULL,则短路逻辑将停止对表达式其余部分的求值(因为整个条件不能为真) )。你做的很好。