2011-10-14 145 views
0
if (ad && (etag = strrcasestr_len(ad,strlen(ad), 
       "</XHTML-STRIPONREPLY>", 21))) { 

这里的广告和ETag是为const char *C++代码审查

当自定义功能strrcasestr_len返回NULL

将表达式计算为(广告& &空)

+1

可能是[不知道是怎么回事......我不能在这里为计算器拒绝,如果我做编辑写if语句]好主意开始并使用更具描述性的更长的变量名称。你没有通过使用简短的变量名称来帮助任何人。 –

回答

4

NULL是假的在布尔上下文中,所以表达式将是false。 (即,如果分支将不被采取)。

1

...其将评估为false,是的。 另请注意,如果adNULL,那么etag = strrcasestr_len(...)根本不会被评估。

0

如果我是代码审查代码,我会告诉作者重写它,以便清楚它的行为是什么。由于混淆的可能性,在编码标准中应排除赋值运算符在条件表达式中的使用。

该行为将被很好地定义,但是这不够理由写它。代码需要清楚。把它分成两种说法可能更容易遵循:

etag = strrcasestr_len(ad, strlen(ad), "</XHTML-STRIPONREPLY>", 21);