有人知道C中if(Expr,Expr)结构的逻辑含义是什么吗?像这样:
if(lcn = (ULONG)GetLCN(index),lcn)发布于 2010-11-20 15:42:58
如果有",",则表达式的计算结果为列表中的最后一个表达式。
所以: 1,3 == 3。
这也可以解释为:
lcn = (ULONG)GetLCN(index);
if (lcn) { .... }他们为什么要这么做,我不能说。
发布于 2010-11-20 15:44:15
您所看到的是实际运行的comma operator。当你有了
if(expr1, expr2)...对expr1求值并将其丢弃,在if语句中使用expr2的值。
发布于 2010-11-20 15:43:44
a, b首先计算a,然后计算b,整个表达式的值为b。因此,例如(false, true)的计算结果为true。
在执行赋值之后,您给出的表达式的值为lcn。同样的事情也可以是写的if ((var = func())) (额外的圆括号会抑制编译器警告,防止意外使用=而不是==)。
https://stackoverflow.com/questions/4231735
复制相似问题