在“for在循环初始化子句中声明多个变量-C

首页 2024-07-09 22:16:28

介绍

如你所知,C 和 C 中 for 句子的语法是:

????for ( init-clause ; 条件表达式 ; 迭代表达式 )

地点:

  • init-clause 开始初始化(准备)循环;
  • condition-expr 每次迭代前进行评估:如为零,则循环退出;
  • iteration-expr 每次迭代后进行评估。

一切都是可选的;假如省略了condition-expr,好像是1,所以:

for (;;) { // 永远
  // ...
}

永恒循环(可能是通过break)、return、goto、exit()、longjmp()、abort()退出之一,或在C 中是throw)。

C 也有基于范围的 for 循环,但那是另一个故事。

最初,init-clause只能是一个句子或表达式;从 C99 一开始,它也可以是一个声明:

for ( 无符号 i = 0; i 



<p>这很好,因为它限制了循环体中声明的变量范围。还可以声明多个变量:<br></p>

<pre class="brush:php;toolbar:false">for ( 无符号 i = 0, j = 0; i 



<blockquote>
<p>迭代表达式<em> 多个子表达式可以用逗号运算符计算。  (实际上,</em>任何<em>逗号运算符可用于表达式计算多个子表达式。  (实际上,</em>任何<em>逗号运算符可以用来计算表达式的多个子表达式。)</em>
</p>

</blockquote>但是如果你想声明多种类型的不同变量呢?你不能。相反,您被迫在循环外声明不同类型的变量:<p>
<br></p>size_t i = 0;
for (node_t *p = list-&gt;head; p-&gt;data;   i, p = p-&gt;next ) {
<pre class="brush:php;toolbar:false">



或者我是这么想的。正如我评论的:

即使是像 C 虽然我已经用了这样一种相对较小的语言来学习新技术,但我仍然在学习新技术 C 超过 35 年了。

事实证明,你

可以init-clause声明多种类型的不同变量.

伎俩

诀窍是使用本地匿名结构:

for ( struct { size_t i; node_t *p; } 循环 = { 0, list-&gt;head };
      循环.p-&gt;数据;   loop.i,loop.p =loop.p-&gt;下一个 ) {

当然,你可以把循环命名为你想要的任何名字; iter 或者 it 都是合理的选择。

当然,它看起来很奇怪,引用循环有点丑——但你可以做到。它可能更有用的是,如果循环是宏的一部分,丑陋的地方就会被隐藏起来。

但仅仅因为你能做到,你就应该这是有争议的。毕竟,在循环之外声明不同类型的变量并不那么可怕。 这是权衡所有变量限制在循环范围内的重要性。 在 C 这通常在语言中并不那么重要。 然而,在 C 在中间,如果至少一个循环变量属于具有分析函数的类型,并且在循环终止后立即运行,则可能证明结构的使用是合理的。 当然,C 结构化绑定可替代:


for ( auto [i, p] = std::make_tuple( 0, list->head ); p->数据; i, p = p->下一个 ) {

  
  
  结论
当然,结构技能并不那么重要,甚至可能不足以证明这篇文章的存在。但我真的认为它非常聪明,即使在有限的情况下也非常有用,所以我认为它值得传播,因为我超越了它 35 年的 C 它在编程生涯中从未见过。

以上就是“for“在循环初始化子句中声明多个变量的详细内容,请关注其他相关文章!


p

最新文章

  • 远程主机端口扫描:安全检测,一键掌控

  • 在“for在循环初始化子句中声明多个变量-C

  • 亦豹远程控制:掌控未来,从此刻开始!

  • 表格数据迁移难题:无法直接复制粘贴

  • 免费 .NET 训练营和招聘机会-C

  • 香港云服务器搭建:高效稳定,首选之选!

  • 冰云互联,卓越云服务,企业首选伙伴!

  • 相关文章

  • 免费 .NET 训练营和招聘机会-C

  • C程序计算数字-C

  • 华为仓颉预览版试用申请已超过 1.1 万人,ACM 主席说“中国正在逐渐出现在编程语言领域”——IT行业

  • 国内首个 HPC 源码仓库“源码之家”推出国家超算互联网平台,涵盖IT行业4000多种源码商品

  • 智加科技论文DualBEV入选电脑视觉顶会ECCV-人工智能

  • 网友推测一家是华为,据报道,两家大厂开发了“三折叠屏”手机-IT行业

  • 全尺寸通用人形机器人青龙出现在WAIC,加速进入特定的智能时代——人工智能

  • 主要家用,小米曝光第三款车型是增程 SUV,2026 年上市-IT行业

  • 昨晚,今天早上,科技 0709:中国移动回应资费升级容易降级,2025年 比亚迪海豚纯电动汽车上市,小米正式宣布 MIX Fold 4 / Flip 折叠屏手机本月发布-IT行业

  • 深光图像新突破:第一个全画幅自动对焦镜头即将发布-IT行业

  • 阿里云推广:新老共享云服务器 99 元 / 年-IT业界

  • 奇幻动作片《异人之下》发布了《争夺身体源流》版预告片,7 月 26 IT行业日上映