我在程序开始时将char指针初始化为NULL,在程序中,char*用于函数调用,它可能指向一个char字符串,它可能指向null char,它可能保持不变.所以下面的语句是正确的,应该是从左到右计算表达式.如果没有则strlen(charpointer)是未定义的行为,如果charpointer == NULL
if ( charpointer == NULL || strlen ( charpointer ) == 0 )
Run Code Online (Sandbox Code Playgroud)
那么,他们是否从左到右进行评估?这是检查这样的正确方法吗?
Sha*_*our 11
评价的顺序||是从左到右,因为Eric提到这是一个特殊属性,||并且&&大多数操作员不执行从左到右的评估.如果左边一个成功,它将不会评估正确的表达,来自C99标准草案6.5.14 第4节:
与按位|不同 运算符,|| 运营商保证从左到右的评估; 在评估第一个操作数后有一个序列点.如果第一个操作数比较不等于0,则不计算第二个操作数.
C++草案标准在5.15 第1节中有类似的语言.