下标运算符中的逗号运算符?

2023-12-28

我对逗号运算符很困惑。我从来没有见过这样的代码和这样的语法?但我很好奇它在任何地方都有用吗?为什么它在 c++20 中被弃用?

#include <iostream>
int main()
{
    int  a[5]{1,2,3,45,5};
    std::cout << a[(2,3)] <<'\n';  //  this is work , in c++17 works
    std::cout << a[2,3] << '\n';   // but this is deprecated in c++20 ,in c++17 works
    return 0;
}

认识到作为表达式运算符的逗号和作为某种语法术语之间的分隔符的逗号之间的区别非常重要。他们使用相同的标点符号,但并不相同meaning.

{}在花括号初始化列表中,各个术语用逗号分隔。所以{1,2,3,45,5}是一个术语序列。这是一个逗号作为分隔符。

但是,在一般表达式中,逗号充当表达式运算符。当逗号是两个表达式项之间的表达式运算符时,表示先计算左侧表达式,丢弃其结果,然后计算右侧表达式,即总表达式的结果。

在一个[], 逗号是notC++17 中的分隔符。因此,它充当表达式运算符。a[2,3]意味着评估 2,丢弃它,然后评估 3。因此使用的索引将为 3。

C++20 不推荐使用逗号表达式作为直接表达式[]。这样做是为了使 C++ 标准的未来版本可以自由地在其中添加逗号[]变成逗号分隔符而不是逗号运算符。那是,[2, 3]将 2 和 3 作为调用重载函数的参数operator[].

这类似于函数参数使用分隔符逗号的方式。因此,如果您需要在函数调用中的两个表达式上使用运算符逗号,则必须将它们包装在(): func(1, (2, 3))。该函数采用两个参数,第二个参数是对其项应用逗号运算符的结果。

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

下标运算符中的逗号运算符? 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 除去字符串中除数字和货币分母之外的所有内容

    我有以下示例字符串 The price is 54 00 including delivery On sale for 12 99 until December European pricing 54 76 excluding UK 我只想
  • 除 ctrl-C 之外的另一种退出 IEX 的方法

    我知道我们可以使用 control C 退出 IEX 控制台 我很好奇是否有一个在控制台中输入的命令也可以做同样的事情 我可以想到退出 IEx shell 的 3 种方法 其中提到的
  • Charles Web 调试代理未检测到 VPN 连接

    我有一个 VPN 连接 正在使用 Charles Web 调试代理测试一些网站 但 Charles 似乎没有检测到我的 VPN 连接 因为它没有检测到我在 VPN 网络上运行的网站 有什么帮助吗 谢谢 我在 Mac 上遇到了同样的问题 但能
  • Spring Boot + Spring Security 授权成功审核

    有没有人设法让 Spring Boot 和 Spring Security 来处理 AuthorizedEvent 即审计日志 我已经实现了以下应用程序事件侦听器 Component public class AuthorizationSu
  • Sublime Text 3:从整个项目的任何地方自动完成?

    我想知道是否有任何方法可以从 Sublime 项目中的任何地方获得智能自动完成功能 我发现很酷的包叫全部自动完成 https sublime wbond net packages All 20Autocomplete哪些索引打开选项卡以进行
  • 验证 t-sql 中的日期?

    我只想验证用户的给定输入 Declare UserInput NVARCHAR 20 set UserInput 26 07 2013 select ISDATE UserInput 即使日期有效 也会返回 false 因为日期采用澳大利亚
  • Rails 3 用户时区

    在 Rails 2 x 中 我不需要专门设置任何时区信息 并且用户无论位于哪个时区 都会获得用户在操作系统中指定的日期时间 现在 在 Rails 3 中 所有内容都以 UTC 格式显示 是否可以恢复默认的查看行为 而无需放入一些 js ha
  • Kafka 不会以 PEM 证书启动

    我发现 Kafka 2 7 0 支持 PEM 证书 我决定尝试使用 DigiCert SSL 证书设置代理 我使用了新选项 我做了所有事情 就像示例中的那样KIP 651 https cwiki apache org confluence
  • IE7 Javascript 并使用字符串作为数组

    奇怪的行为 我只是发布这个问题 看看是否有人知道其原因 或者我的代码是否完全错误 string text yip let s take some weird character alert text 0 all major browsers
  • 如何通过OpenCV和python打开IP摄像头URL?

    我已经在 MacX Lion 上安装了支持 ffmpeg 的 opencv import cv2 import cv import base64 import time import urllib2 import numpy as np f
  • 在 Firefox 中加载图像时显示边框和标题

    我的火狐浏览器有问题 我的网站上有很多图片 当我在 Firefox 中浏览页面时 加载图像时边框和图像标题可见 下载完成后 该边框 标题就会消失并被图像取代 这种情况只发生在火狐浏览器中 Chrome 和其他浏览器加载没有任何边框和标题的图
  • Scala + Android 新手

    我正在尝试使用 scala andriod 插件 但在运行和配置 AVD 时遇到问题 我从 sbt 收到以下错误 android 模拟器启动 NexusOne 成功 总时间 0 s 完成 2011年11月18日 7 07 53 PM 模拟器
  • Rabbitmq 使用单个同步调用检索多条消息

    有没有办法使用单个同步调用接收多条消息 当我知道队列中有 N 条消息 N 可以是小于 10 的小值 时 我应该能够执行类似于 channel basic get String queue boolean autoAck int number
  • 通过 Crystal Web 服务以编程方式设置 Crystal Server 上 Crystal Report 的数据源

    如何更改在 Crystal 服务器中运行的 Crystal 报表在运行时使用的数据源 数据库服务器 用户名 密码 我有一台水晶服务器 并上传了具有一组数据源的报告 托管在服务器 A 用户 A 密码 A 上的 SQL Server 2005
  • Cache-Control: max-age=0 和 no-cache 有什么区别?

    标题Cache Control max age 0意味着内容立即被视为过时 并且必须重新获取 这实际上与Cache Control no cache 我有同样的问题 并在搜索中找到了一些信息 您的问题作为结果之一出现 这就是我所决定的 有两
  • sqlcipher - sqlcipher 的安全性如何?它被黑客入侵了吗?

    它在页面级别加密 SQLite 数据库 好吧 没问题 但是你的源代码呢 它已编译 但即使已编译 有人也可以反编译它 检索您的密码并解密数据库吗 SQLCipher 的安全性如何 根据SQLCipher设计文档 http sqlcipher
  • 是否有更快的代码用于向表中添加新行 - Excel VBA

    每当我的代码找到要添加到其中的新值时 我都会向表中添加一个新行 我为此使用的代码Set newRow ProjectTable ListRows Add工作正常 但这使其运行速度非常慢 是否有代码可以完成相同的任务但运行速度更快 Dim P
  • 如何在flutter中自定义标签栏宽度?

    您好 我们可以在 flutter 中自定义标签栏宽度吗 我的标签栏宽度是固定的 所以当我的标签栏中有长文本时 它不会完全显示 我想让我的标签栏宽度根据内容灵活 所以当我的文本只是短文本时 标签栏宽度会很小 当文本是长文本时 选项卡栏宽度大于
  • 来自 github 存储库的 Scala sbt 文件依赖项

    是否可以包含来自 github 的依赖项 存储库没有 jar 文件 只有 build sbt 文件和源文件夹 您可以创建一个新项目 该项目指向您的源代码build sbt然后使用dependsOn lazy val projectIDepe
  • 下标运算符中的逗号运算符?

    我对逗号运算符很困惑 我从来没有见过这样的代码和这样的语法 但我很好奇它在任何地方都有用吗 为什么它在 c 20 中被弃用 include