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

C-有条件陈述及;strcmp&;空字符串,c,null,strcmp,C,Null,Strcmp,这样做有多安全: if (flag_val != NULL && strcmp (val, flag_val) == 0) { // something } else { // something else } 知道有时flag_val将为NULL,有时则不是 我知道如果flag\u val!=NULL,如果其计算结果为false,则不应检查第二个条件,对吗 谢谢正确,如果标志值为空,则&&运算符将短路。只要其他线程不能更改标志值,这就是安全代码。如果标志值!=NU

这样做有多安全:

if (flag_val != NULL && strcmp (val, flag_val) == 0) {
   // something
} else {
   // something else
}
知道有时
flag_val
将为
NULL
,有时则不是

我知道如果
flag\u val!=NULL
,如果其计算结果为false,则不应检查第二个条件,对吗


谢谢

正确,如果标志值为空,则&&运算符将短路。只要其他线程不能更改标志值,这就是安全代码。

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

我想你的意思是“如果它的评估结果是错误的”。是的,修复了这个问题。谢谢。很酷,很高兴知道!谢谢大家!