[英]if(Expr,Expr) structure in C?
有人知道C中if(Expr,Expr)结构的逻辑含义是什么? 喜欢:
if(lcn = (ULONG)GetLCN(index),lcn)
当您有“,”时,该表达式将计算为列表中的最后一个表达式。
因此:1,3 == 3。
这也可以解释为:
lcn = (ULONG)GetLCN(index);
if (lcn) { .... }
他们为什么这么做,我不能说。
a, b
首先计算a
,然后是b
,整个表达式的值为b
。 因此,例如(false, true)
评估为true。
作为示例,给出的表达式在执行赋值后具有lcn
的值。 if ((var = func()))
(额外的括号会抑制编译器警告,以防偶然使用=
而不是==
),可能会是同一件事,并且更通常是这样写。
您正在看到C的逗号运算符在起作用。
基本上,除最后一个表达式外的所有表达式都被求值,但其结果被丢弃; 然后对最后一个求值并返回到表达式的其余部分。
因此,在您的情况下,将设置lcn
,然后进行检查(在if
语句中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.