如何在 C 中的 for (;;) 循环中声明多个变量?

2024-04-30

我认为可以在一个变量中声明多个变量for loop:

for (int i = 0, char* ptr = bam; i < 10; i++) { ... }

但我刚刚发现这是不可能的。 GCC 给出以下错误:

错误:“char”之前应有不合格的 id

你真的不能在一个变量中声明不同类型的变量吗?for loop?


您可以(但通常不应该)使用本地结构类型。

for ( struct { int i; char* ptr; } loopy = { 0, bam };
      loopy.i < 10 && * loopy.ptr != 0;
      ++ loopy.i, ++ loopy.ptr )
    { ... }

从 C++11 开始,您可以更优雅地初始化各个部分,只要它们不依赖于局部变量即可:

for ( struct { int i = 0; std::string status; } loop;
      loop.status != "done"; ++ loop.i )
    { ... }

这几乎是可读的,足以真正使用。


C++17 解决了以下问题结构化绑定 https://en.cppreference.com/w/cpp/language/structured_binding:

using namespace std::literals::string_literals;

for ( auto [ i, status ] = std::tuple{ 0, ""s }; status != "done"; ++ i )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C 中的 for (;;) 循环中声明多个变量? 的相关文章

  • 检测到 NuGet 包的版本冲突

    我正在开发 ASP Net core 2 1 Web 应用程序项目 我的解决方案中有 1 个项目和 3 个其他库 它是高级架构 数据访问层 DAL 业务层 BL 公共层 CL 所以我需要添加引用来连接一些库和项目 我已经添加了CL参考我的项
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • App Engine Cron 作业始终返回 HTTP 状态代码 301

    我已关注本指南 https cloud google com appengine docs flexible ruby scheduling jobs with cron yaml为我的 Rails 应用程序创建 cron 作业 但 HTT
  • 标签 标签语义

    我读了this https stackoverflow com questions 1094352 can a label only refer to input elements我通常使用跨度或强来描述 文本标签 对于最佳实践来说这是真的
  • org.dozer.MappingException:找不到字段的读取或写入方法

    org dozer MappingException 找不到字段的读取或写入方法 tarShipMethodCode lmCourier courierName 在类 class com essilor ong domain invento
  • 比较字符变量

    我想在 R Studio 中比较两个不同的字符变量 第一列 BZ Pred 显示参与者预测的 5 个最常用的应用程序 第二列 BZ Act 显示实际使用最多的 5 个应用程序 现在我想创建第三列 如果第一个应用程序被正确猜测 则包含 是 如
  • ASP.NET 中的网络凭据错误

    我正在尝试使用 NetworkCredential 类通过 ASP NET 访问网页 但是我不断收到以下消息的异常System Security Cryptography CryptographicException The handle
  • 为什么在将应用程序部署到 Heroku 时会出现此错误?

    使用 git hub 将应用程序部署到 heroku 时遇到某种错误 问题是 我不理解 heroku 日志和随之而来的错误 这是 Heroku 日志 Marcuss MacBook Pro Weather App marcushurney
  • 公钥的长度(加密)可以与私钥不同吗?

    我有一个 1024 位的私钥 并用它来生成公钥 这是否自动意味着我的公钥也具有 1024 加密 或者它的加密大小可以更小吗 512 256 PS 我最感兴趣并谈论的是 RSA 密钥中模数 n 的大小 大小通常为 1024 或 2048 位
  • 启用 WCF 数据服务默认接受/返回 JSON

    我有一个 WCF 数据服务 我希望默认情况下为所有操作返回 JSON 我可以在配置 通过服务属性中设置它吗 为了通过 format 标签启用 json 如下所示 host 8038 YourService svc format json 将
  • 您会在新的商业项目中使用 S#arp 架构吗?

    The S arp 架构 http code google com p sharp architecture 看起来真的很酷 但是您是否认为它仍然太新而无法在重要的新项目中做出承诺 我们假设该项目乍一看很适合它 It all seems非常
  • 无法在 XAMPP 和 Windows XP 上安装 Xdebug

    我知道 这个问题已经被问过好几次了 但答案并没有解决我的问题 我在 Windows XP SP3 上运行 XAMPP 1 8 2 并且在安装 XDebug 时遇到困难 我从网站下载了XDebug 不幸的是 安装向导对我不起作用 我的 PHP
  • 如何在 CSV 文件中插入新行?

    我正在创建一个系统 其中涉及创建用于错误记录的 CSV 我当前的代码成功创建了一个具有唯一名称的新文件 然后将现有数据 来自数组 添加到 CSV 中 我遇到的问题是在文件中添加新行 这是维持正确结构所必需的 我现有的代码 current f
  • rvm 监控延迟作业

    我正在尝试使用 monit 运行delayed job 但它无法运行 因为 rvm 的路径 每个用户的本地 rvm 安装 对该命令不可用 我的应用程序是一个带有捆绑器的rails2应用程序 Monit 无法找到捆绑程序 有人对我如何了解 m
  • 致命错误:未找到“MongoDB\Driver\Manager”类

    我想使用 MongoDB 驱动程序 但当我使用它时 它抛出一个错误 mongo new MongoDB Driver Manager mongodb localhost 27017 错误 消息 未找到类 MongoDB Driver Man
  • 合并 Pandas Dataframe:如何添加列和替换值

    我有一个数据帧 df1 并想要合并其他 许多 数据帧 df2 以便 合并发生在匹配的 多 索引上 如果缺失 将创建新列 如果列已存在 则替换值 正确的 pandas 操作是什么以及使用什么参数 我查看了 concat join merge
  • 解析 JSONException:JSONArray 文本必须以字符 1 处的 '[' 开头

    我正在尝试将 Android 应用程序与本地 MySQL 数据库连接 但遇到问题 解析 JSON 数组 我在这里阅读了所有类似的问题 但没有任何作用 错误消息 Error parsing data org json JSONExceptio
  • 使用 Sheets API v4 获取与 Google 帐户关联的所有电子表格的列表

    使用 Google Sheets API v4 我希望获取附加到我的帐户的电子表格列表 我做了很多研究 但还没有找到任何解决方案 v4 API 不提供列出电子表格的方法 您需要使用 Drive API 这从以前的 API 页面迁移 http
  • Mongodb 获取聚合框架中的最后组合

    有一个消息集合 date NumberLong 1421134514 sender 53172480f9cd0e682840b9f7 recipient 52f37fbaf9cd0e02773c97b1 isRead false id 54
  • Office 365 默认日历的 ID 自动更改

    我使用 Office 365 API 的 V2 DLL 来执行日历操作 我正在保存默认日历的 ID 以对其执行操作 从过去两年开始 它对我来说工作得很好 但最近自从上 1 个月以来 当我尝试从我的帐户中获取日历时 只是为了检查日历是否适用于
  • 如何使用正则表达式提取字符串进行词性标记

    参考question https stackoverflow com questions 44434739 how to extract a string before and after slash in r 我在以下示例的解决方案中面临
  • 如何在 C 中的 for (;;) 循环中声明多个变量?

    我认为可以在一个变量中声明多个变量for loop for int i 0 char ptr bam i lt 10 i 但我刚刚发现这是不可能的 GCC 给出以下错误 错误 char 之前应有不合格的 id 你真的不能在一个变量中声明不同