use*_*521 1 c pointers dereference
这是什么原因?我认为如果指针为null,则不会评估其余条件.
// doesn't work:
char *ptr = somefunction();
if (ptr && ptr[0] == '1' || ptr[0] == 't')
// ...
// does work:
char *ptr = somefunction();
if (ptr)
if (ptr[0] == '1' || ptr[0] == 't')
// ...
Run Code Online (Sandbox Code Playgroud)
ptr && ptr[0] == '1' || ptr[0] == 't'
Run Code Online (Sandbox Code Playgroud)
手段:
ptr && ptr[0] == '1'(false,因为ptr是null并且ptr[0] == '1'没有得到评估)ptr[0] == 't'(繁荣)使用:
ptr && (ptr[0] == '1' || ptr[0] == 't')
Run Code Online (Sandbox Code Playgroud)
代替.