如何将两个增量语句放入 C++“for”循环中?

2023-12-14

我想增加两个变量for-循环条件而不是一个。

所以像这样:

for (int i = 0; i != 5; ++i and ++j) 
    do_something(i, j);

这个的语法是什么?


一个常见的习惯用法是使用逗号运算符它计算两个操作数,并返回第二个操作数。因此:

for(int i = 0; i != 5; ++i,++j) 
    do_something(i,j);

但这真的是逗号运算符吗?

现在写完后,一位评论者表示这实际上是 for 语句中的一些特殊语法糖,而不是逗号运算符。我在 GCC 中检查了这一点,如下所示:

int i=0;
int a=5;
int x=0;

for(i; i<5; x=i++,a++){
    printf("i=%d a=%d x=%d\n",i,a,x);
}

我期望 x 获取 a 的原始值,因此 x 应该显示 5,6,7..。我得到的是这个

i=0 a=5 x=0
i=1 a=6 x=0
i=2 a=7 x=1
i=3 a=8 x=2
i=4 a=9 x=3

但是,如果我将表达式括起来以强制解析器真正看到逗号运算符,我会得到这个

int main(){
    int i=0;
    int a=5;
    int x=0;

    for(i=0; i<5; x=(i++,a++)){
        printf("i=%d a=%d x=%d\n",i,a,x);
    }
}

i=0 a=5 x=0
i=1 a=6 x=5
i=2 a=7 x=6
i=3 a=8 x=7
i=4 a=9 x=8

最初我认为这表明它根本不是逗号运算符,但事实证明,这只是一个优先级问题 - 逗号运算符具有尽可能低的优先级,因此表达式 x=i++,a++ 被有效解析为 (x=i++),a++

感谢所有的评论,这是一次有趣的学习经历,而且我已经使用 C 多年了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将两个增量语句放入 C++“for”循环中? 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 如何在条形图中显示每个条形的条形值?

    需要查看条形图中的条代表的精确值 而不是 Y 轴上的近似值 这怎么可能做到呢 谢谢阅读 在 iReport 3 7 6 中 您只需选中 BarPlot 属性下的 显示标签 框即可 在之前的版本 3 1 4 中 我必须创建一个 ChartCu
  • Python - 英语翻译器

    用 Python 编写程序将英语单词和 或短语翻译成其他语言的最佳方法是什么 AJAX Language API 这是一个非常困难的问题 语言非常非常very复杂的 想想你必须做的所有事情 解析这个短语 弄清楚这些词的意思 然后翻译它们 这
  • 如何禁用 NSURLConnection 中的 keepalive?

    有什么办法可以强制NSURL连接不重复使用当前的持久连接但要创建一个新的 我正在努力保护自己免受这个已知的影响iOS8 保活错误 如果 iOS 8 收到带有 Keep Alive 标头的 HTTP 响应 它会保留此标头 连接稍后重用 应该如
  • 查找包含带有标签的子任务的家长问题

    我有一个 JIRA 项目 我的一些任务包含标签为 needDesign 的子任务 是否可以找到包含具有该标签的子任务的所有父任务 我使用ondemand jira版本 Jira JQL 并非不提供开箱即用的功能 但是有许多扩展 JQL 的附
  • javafx平台runlater返回结果

    我正在开发 JavaFX 应用程序 在我的场景中是显示在 JavaFX 中创建的密码提示 该提示需要带有两个选项的密码OK and Cancel 我已返回用户输入的密码 我的显示密码对话框的类别是 public static String
  • 如何在不使用 ++ 或 + 或其他算术运算符的情况下将两个数字相加

    如何在不使用 或 或任何其他算术运算符的情况下将两个数字相加 这是很久以前在一次校园面试中被问到的问题 不管怎样 今天有人问了一个关于一些位操作的问题 并在回答中给出了一个漂亮的指南斯坦福有点玩弄 这是我前段时间为了好玩而写的 它使用一个二
  • jquery®ex 的电话号码格式

    我需要验证任何输入 val 并将其转换为电话号码格式 即 input 呃 f375g25123435s67我需要转换成 375 25 1234567 keyup function newval this val replace D g ne
  • 为我的网站编写
    标记的正确方法,以提供我们公司的联系方式

    我正在使用 asp net mvc 5 构建一个网站 我想提供我们公司的联系方式 如电话 电子邮件 邮政地址等 所以我使用了
  • 如何将 NSString 初始化为带双引号的文本[重复]

    这个问题在这里已经有答案了 我想将 NSString 初始化为带双引号的 头发 可能吗 有什么帮助吗 但 NSString str hai 我想将其转换为 hai 而不直接初始化 有什么帮助吗 如果您想转换现有字符串 请使用以下命令 NSS
  • 将 R 中二项式 glm 的 cbind() 格式转换为具有单独行的数据帧

    按照此处的示例 R中二项式glm的输入格式 我有一个数据集y cbind success failure 每行代表一种治疗 我的问题是 如何将每个观察值转换为 二进制 格式 例如 每个观察值 y 0 或 1 工作示例在这里 df1 lt d
  • 使用 Retrofit 和 Gson 解析 JSON 数组响应

    这是来自 Web 服务的 JSONArray 响应 sponsors leg id NYL000067 type primary name AUBRY leg id NYL000171 type cosponsor name PERRY l
  • 如何修复 java.lang.NoSuchMethodError: sun.security.ssl.SSLSessionImpl

    应用程序通过读取jsf形式的参数来发送信件 我不明白为什么以及如何修复它 因为当您从开发环境运行时 一切正常 当我将应用程序放在 VPS 服务器上时 我收到下一个错误堆栈 尽管应用程序根据需要在本地主机上运行 StandardWrapper
  • 防止SQL注入的好方法有哪些? [复制]

    这个问题在这里已经有答案了 我必须为我的在职培训公司编写一个应用程序管理系统 前端将用 C 完成 后端将用 SQL 完成 我以前从未做过这种规模的项目 在学校里我们只学过有关 SQL 的基础课程 不知何故 我们的老师完全没有讨论SQL注入
  • 难道真的不能写一个在windows中隐藏密码的php cli密码提示吗?

    我花了几个小时试图找到一种在 php 中编写跨平台密码提示的方法 该提示隐藏用户输入的密码 虽然这可以通过使用 stty echo 在 Unix 环境中轻松完成 但我尝试了各种 passthru 和 system 调用方法来使 Window
  • Java-PLSQL-从java调用记录表

    PLSQL 包过程声明 TYPE custom type IS TABLE OF single rec type TYPE single rec type IS RECORD id name etc Problem 但custom type
  • 通过 Google Apps 脚本在日历上创建带有附件的活动

    我找不到向我的日历活动添加附件的方法 我希望应该有一个像下面的代码片段这样的简单方法 function createNewEvent var file DriveApp getFileById 1eqaThzYmTbZzP my file
  • System.Windows.Forms.WebBrowser 等待页面完全加载

    我一直在尝试很多不同的解决方案wait and async 似乎没什么作用 我无法找到实际上完全等待页面完全加载的解决方案 所有代码都在等待一段时间 但直到页面加载完毕 我在下一个过程中收到错误 我如何将示例代码设置为等待模式 直到Docu
  • 如何在Python上通过类名正确查找元素?硒相关

    我正在尝试自动化一个流程这一页 根据其html代码 点击该页面右上角的钱包按钮后 会部署4个主要钱包来选择登录该页面 所有这些钱包都属于同一类elements StyledListItem sc 197zmwo 0 QbTKh 我编写了下面
  • Visual C++ 代码无法在 Code::Blocks 中运行

    我当前使用以下代码从 C Dll 调用函数 该代码在 Visual C 中完美运行 include
  • 如何将两个增量语句放入 C++“for”循环中?

    我想增加两个变量for 循环条件而不是一个 所以像这样 for int i 0 i 5 i and j do something i j 这个的语法是什么 一个常见的习惯用法是使用逗号运算符它计算两个操作数 并返回第二个操作数 因此 for