本文介绍了检查是否为复合,然后C中的其他条件总是安全的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
(这个问题是但是关于C ,而不是C ++。有人指出问题应该更多具体)。
(this question is an exact copy of Is compound if checking for null and then other condition in C++ always safe? but about C, not C++. It was pointed out that the question should be more specific).
我一直在使用以下类型的 if
条件很长时间。
I have been using the following type of if
condition for a lot of time.
char* ptr = ...;
if (ptr != NULL && ptr[0] != '\0') // <=== is this always safe?
{ /* ... */ }
它依赖于 ptr!= NULL
在 ptr [0]之前检查!='\ 0'
。
在所有标准,编译器和架构下是否安全?或者是否有可能在 ptr!= NULL
ptr [0]!='\ 0' >?
Is it safe under all standards, compilers, architectures? Or is there a possibility that ptr[0] != '\0'
will be checked before ptr != NULL
?
推荐答案
是的,这是安全的。
C标准说(N1570 - 6.5.13逻辑AND运算符):
C standard says (N1570 - 6.5.13 Logical AND operator):
这篇关于检查是否为复合,然后C中的其他条件总是安全的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!