【发布时间】:2013-08-29 07:46:31
【问题描述】:
我有一个在程序开始时初始化为 NULL 的 char 指针,在程序中,char* 用于函数调用中,它可能指向一个 char 字符串,它可能指向 null char,它可能保持不变。 下面的陈述是否正确,如果表达式是从左到右计算的,应该是正确的。如果不是,则 strlen (charpointer) 是未定义的行为,如果 charpointer == NULL
if ( charpointer == NULL || strlen ( charpointer ) == 0 )
那么,它们是从左到右进行评估的吗?这是进行这种检查的正确方法吗?
【问题讨论】:
-
我确定这是多次重复。
||的操作数需要从左到右进行计算,使您的表达式安全(只要charpointer是空指针或指向字符串的有效指针)。对于大多数其他运算符,评估顺序是未指定的。 -
请注意,求值顺序与表达式用作
if语句中的条件无关;这完全是关于||运算符。