C - 条件语句&strcmp&NULL字符串

0 c null strcmp

做以下事情是多么安全:

if (flag_val != NULL && strcmp (val, flag_val) == 0) {
   // something
} else {
   // something else
}
Run Code Online (Sandbox Code Playgroud)

知道有时flag_valNULL,有时不会.

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

谢谢

cdh*_*wie 8

正确,如果flag_val为NULL,则&&运算符将短路.只要其他线程无法更改flag_val,这就是安全的代码.