为什么需要在索引中添加“0”才能访问数组值? [复制]

2023-11-29

我对这一行感到困惑:

sum += a[s[i] - '0']; 

为了提供一些上下文,这是代码的其余部分:

#include <iostream>

using namespace std;

int main() {

    int a[5];
    for (int i = 1; i <= 4; i++)
        cin >> a[i];
    string s;
    cin >> s;
    int sum = 0;
    for (int i = 0; i < s.size(); i++)
        sum += a[s[i] - '0'];
    cout << sum << endl;
    return 0;
}

- '0'(或不太便携- 48, for ASCIIonly) 用于通过十进制代码手动将数字字符转换为整数,C++(和 C)保证所有编码中的连续数字。

In EBCDIC,例如,代码范围为240 for '0' to 249 for '9',这将很好地与- '0',但会失败- 48). 仅出于这个原因,最好始终使用- '0'符号像你所做地。

对于 ASCII 示例,如果'1'的 ASCII 码是49 and '0'的 ASCII 码是48, 49 - 48 = 1,或采用推荐的格式'1' - '0' = 1.

因此,正如您现在可能已经了解的那样,您可以使用这个简单的算术将字符中的所有 10 位数字转换为,只需减去'0'在另一个方向上,您可以通过添加将所有数字转换为其字符编码'0'.

除此之外,代码中还存在一些其他问题:

  • 数组不会在索引处开始填充0,但在索引处1,因此,如果您的字符串输入是,例如,"10" the suma[1] + a[0], but a[0]没有分配值,所以行为未定义,您需要留意这些情况。
for (int i = 0; i < 5; i ++)
    cin >> a[i];

更合适的是,索引来自0 to 4,由于数组有5个索引,如果你想输入1到5之间的数字,你可以减去1稍后从 到索引。

  • 正如评论部分所指出的,错误的输入(例如字母字符)也会引发未定义的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么需要在索引中添加“0”才能访问数组值? [复制] 的相关文章

  • 如何以编程方式将访问键(快捷方式)添加到 WPF ContextMenu?

    我已经有以下内容 var myContextMenu new System Windows Controls ContextMenu var exitItem new MenuItem exitItem Header E xit exitI
  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 从内存流播放视频文件

    只是好奇看看这是否可能 我有一个 Windows 应用程序 它从我的电脑上的 avi 文件读取所有字节 然后将其存储在 byte 中 现在我的内存中有 avi 文件 我想直接从内存将其加载到某种视频播放器控件中 我尝试过使用 wmplaye
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 意外的 const 引用行为

    include
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • 如何让 Google App Engine 具有从数据库下载内容的下载链接?

    好吧 假设我有一个数据库 Class Content db Model code db TextProperty 我想在网页上提供一个下载链接来下载以下内容code 我该怎么做 我正在使用 python 和 jinja2 您将创建一个发送回
  • 使用 Spring、JPA 和 Hibernate 访问 Jboss 中配置的多个数据库/数据源

    我有一个要求 我需要配置一个基于 Spring 的应用程序以使用两个数据库 我们有两个数据库 一个用于保存实时数据 另一个数据库用作数据仓库并包含存档数据 其结构与实时数据库完全相同 为了简单起见 假设有一个搜索产品的请求 应用程序应该做的
  • 在 MVC 中将值从控制器传递到视图

    我有一个使用数据脚手架生成的视图 该视图有一个文本字段 创建视图 div class form group Html LabelFor model gt model GroupId htmlAttributes new class cont
  • 无法在 Conda 环境中安装 Bioconda 软件包

    我正在尝试安装一些软件包Bioconda 频道使用 Conda 但即使添加了通道 我也会遇到以下错误 C Users matti gt conda install c bioconda pybedtools Solving environm
  • 将平面 JSON/字典映射到模型(包含子类)

    我想将一个平面json字符串转换为一个模型 目标类有子类 并且平面json具有所有带前缀的子类对象 就像 classname property FirstName Joey LastName Billy EmploymentDetails
  • Json Schema:仅当深层嵌套对象中存在特定属性时才需要属性

    我需要构建一个 json 模式 草案 4 该模式需要基于另一个嵌套对象中属性的存在的属性 我已经搜索并尝试了很多东西 anyOf oneOf not dependency 但没有运气 也许这在 json 模式中是不可能的 这是我的简化架构
  • 如何在 python 2.4 中安全地打开/关闭文件

    我目前正在使用 Python 编写一个小脚本 以便在我们的一台服务器上使用 服务器仅安装了Python 2 4 4 我直到 2 5 发布才开始使用 Python 所以我习惯了这种形式 with open file txt r as f do
  • 如何将 std::find/std::find_if 与自定义类对象向量一起使用?

    我有一个代表用户的类 名为Nick我想用std find if在它上面 我想在其中查找用户列表向量是否包含与我传入的相同用户名包含的对象 我做了一些尝试 尝试创建一个新的Nick我想测试并重载的用户名对象 operator然后尝试使用fin
  • WebAPI 返回 XML

    我希望我的 WEB API 方法将 XML 对象返回给调用应用程序 目前它只是将 XML 作为字符串对象返回 这是不可以吗 如果是这样 您如何告诉 webapi get 方法它正在返回 XML 类型的对象 Thanks 编辑 Get 方法的
  • 在 SQL Server 中使用 HashBytes 从数据库返回不同的结果

    我尝试计算某个值的 md5 哈希值 但得到了一个奇怪的结果 我以两种不同的方式运行它 SELECT HASHBYTES md5 ZLA PASSWORD ZLA PASSWORD len ZLA PASSWORD FROM ZLA PASS
  • 组间语音识别API

    有关于此的任何 API 或任何帮助 请告诉我 我在想这是通过与服务器交互来实现的 其中将包含语音识别解析器或 API 等 我正在开发一个 iPhone 应用程序 我必须在其中实现语音识别 四名成员将他们喜欢的话语 通过说出 一一存储在iPh
  • 从文件中读取多行并根据开始和结束模式将它们组合成一行?

    我正在编写一个程序来尝试从我拥有的文本文件中清理数据 该文件包含我和朋友之间的短信 因此它看起来像这样的格式 06 07 2016 21 44 Friend 1 Sure So there s usually a date set by t
  • 如何从 SimpleHTTPServer 获取客户端 IP

    使用以下命令构建一个简单的文件服务器SimpleHTTPServerPython 中的模块 但是当我尝试从连接客户端获取 IP 时遇到问题 这是我所拥有的 import SimpleHTTPServer Handler SimpleHTTP
  • 如何将批处理文件输出到一行?

    我是脚本编写新手 所以我需要一些帮助 我找了两天了 没明白 我正在做的是扫描目录中的特定文件 然后计算结果并将其通过管道传输到文件 dir DONE find 04338 c gt gt 04338 txt 所以结果看起来像这样 14 14
  • 处理远程通知

    我正在阅读如何处理苹果开发者指南上的远程通知 我的问题有两个 这句话的解释是什么 当应用程序未运行时发送通知 前景 未在前台运行涵盖了后台和未运行或仅处于后台状态 根据解释 以下句子 在运行 iOS 的设备上点击应用程序图标 应用程序调用相
  • Nginx ingress 忽略 ConfigMap 和注释

    我已经设置了一个k8s集群 目前1个裸机节点 既是master又是worker 我还设置了 Nginx 入口控制器 如下所述 https docs nginx com nginx ingress controller installatio
  • VHD Java 库

    我正在寻找一个可以打开 vhd 文件的 Java 库 我想创建一个可以在其中导航的程序 我也希望它是 跨平台 我已经用谷歌搜索了一段时间的图书馆 但一无所获 我只找到了一个old没有回答的问题这里关于堆栈溢出 谁能帮我 考虑libguest
  • 在 Visual Studio 2019 中生成视图时出错

    当我在 Visual Studio 2019 中创建 ASP NET MVC 视图时 出现以下错误 运行所选代码生成器时出错 值 1 超出可接受范围 0 2147483647 我该如何解决 我们必须打开 vs 2019 并选择工具 gt 选
  • 亚马逊产品广告 API 签名问题

    我正在尝试使用亚马逊网络服务示例代码页面中发布的以下代码在亚马逊产品数据库中进行搜索 AWSECommerceService ecs new AWSECommerceService Create ItemSearch wrapper Ite
  • 为什么需要在索引中添加“0”才能访问数组值? [复制]

    这个问题在这里已经有答案了 我对这一行感到困惑 sum a s i 0 为了提供一些上下文 这是代码的其余部分 include