首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if(Expr,Expr)结构用C?

if(Expr,Expr)结构用C?
EN

Stack Overflow用户
提问于 2010-11-20 15:40:30
回答 4查看 141关注 0票数 0

有人知道C中if(Expr,Expr)结构的逻辑含义是什么吗?像这样:

代码语言:javascript
复制
if(lcn = (ULONG)GetLCN(index),lcn)
EN

回答 4

Stack Overflow用户

发布于 2010-11-20 15:42:58

如果有",",则表达式的计算结果为列表中的最后一个表达式。

所以: 1,3 == 3。

这也可以解释为:

代码语言:javascript
复制
lcn = (ULONG)GetLCN(index);
if (lcn) { .... }

他们为什么要这么做,我不能说。

票数 9
EN

Stack Overflow用户

发布于 2010-11-20 15:44:15

您所看到的是实际运行的comma operator。当你有了

代码语言:javascript
复制
if(expr1, expr2)...

expr1求值并将其丢弃,在if语句中使用expr2的值。

票数 5
EN

Stack Overflow用户

发布于 2010-11-20 15:43:44

a, b首先计算a,然后计算b,整个表达式的值为b。因此,例如(false, true)的计算结果为true。

在执行赋值之后,您给出的表达式的值为lcn。同样的事情也可以是写的if ((var = func())) (额外的圆括号会抑制编译器警告,防止意外使用=而不是==)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4231735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档