开发者社区> 问答> 正文

对一行C代码的语法不明白,求解释

下面的代码中

for (pos = hlist_bl_first_rcu(head);
    pos &&
    ({ tpos = hlist_bl_entry(pos, typeof(*tpos), member); 1; });
    pos = rcu_dereference_raw(pos->next))  
{  
...  
}

第3行 ({ tpos = hlist_bl_entry(pos, typeof(*tpos), member); 1; }) 的意思是执行函数 hlist_bl_entry() 后再将这个括号的值设置为 1,就是这个 for 循环只通过 pos 的值来判断是否继续执行。

现在不太清楚这一行的语法,为什么可以这么写,求解释。

展开
收起
a123456678 2016-06-06 10:11:40 1603 0
1 条回答
写回答
取消 提交回答
  • 之前也没见到过这样的特殊用法,刚才搜了一下,找到了有关的描述。

    ({exp1; exp2; exp3;})
    这样的用法是复合语句的表达式用法,其值等于exp3的值。如果exp3不能求值,得到的结果就是void。
    
    ( {int a = 2+1; int b = 0; b;} ) // 0
    ( {int a = 2+1; int b = 0; int c = 0;} ) // void
    2019-07-17 19:27:47
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《0代码搭应用》 立即下载
不止代码 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多