如果传入空指针,以下代码是否安全?

if(ptr && *ptr == value)
{
   //do something
}

支票的顺序重要吗?如果我将其更改为此可以吗?
if(*ptr == value && ptr)
{
   //do something
}

最佳答案

前者是正确和安全的,后者则不是。

内置的&&运算符具有短路语义,这意味着当且仅当第一个为true时,才对第二个参数求值。

(对于重载运算符,情况并非如此。)

10-07 12:27
查看更多