0

执行以下操作有多安全:

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

知道有时flag_valNULL,有时不会。

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

谢谢

4

2 回答 2

8

正确,如果 flag_val 为 NULL,则 && 运算符将短路。只要 flag_val 不能被其他线程更改,这是安全代码。

于 2010-11-10T02:45:18.930 回答
1

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

于 2010-11-10T02:45:27.840 回答