使用 int 值初始化向量

2024-04-20

我想用这个 ASCII 代码初始化这个 char 向量:

vector <char> a = { 201, 187, 200, 188, 205, 186 };

我在所有 6 个字符中都收到此语法错误:

从“int”到“char”的缩小转换无效:常量值不适合目标类型

但是当我使用相同的 ASCII 代码初始化单个 char 变量时:

char b = 201;

效果很好。

所以我意识到,在向量中,由于某种原因,char类型可以接收int值直到127。从128开始出现语法错误。

这与普通变量不同,普通变量可以接收任何 int 值。

我尝试将向量声明为 unsigned char,语法错误消失了。

vector <unsigned char> a = { 201, 187, 200, 188, 205, 186 };

但仍然,

为什么 char 类型向量不能接收与 char 类型变量相同的 int 数据?

我真的很感激有人向我解释这种行为。


有两件事正在发生。

1
第一个是默认值范围char类型,即实施定义。在大多数主要编译器中,默认值为 [-128,127]。 (而且,奇怪的是,这是notsigned char, JSYK!)

MSVC 和 GCC 都提供了治疗选择char已签名或未签名。您可以这样做来解决全局问题。

不过,最好不要假设char处理 [0,127] 范围之外的任何内容。使用signed char or unsigned char再具体一点。

2
第二个是你正在使用大括号初始化 http://en.cppreference.com/w/cpp/language/list_initialization,这要求检查文字元素值的范围拟合。

举个例子:

std::vector <char> xs = { 201, 202 };  // compiler error

char x { 201 };  // compiler error

char x = 201;  // compiler warning

如果您没有提高编译器的错误级别(您应该这样做),那么编译器将默默地忽略该警告并分配该值,即使它在技术上是无效的。

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

使用 int 值初始化向量 的相关文章

  • VSTS 构建失败/发布无法在 bin 文件夹中找到 roslyn\csc.exe

    我们有一个网站项目 安装了以下 nuget 软件包 Microsoft CodeDom Providers DotNetCompilerPlatform 1 0 8 Microsoft Net Compilers 2 4 0 The web
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • C 中的复合语句表达式

    下面的代码不起作用 int i void 999 100 添加括号就可以了 为什么 int i void 999 100 还有另一种方法可以完成此类分配 int i void 999 100 是什么让他们与众不同 在这份声明中 int i
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 基于 MS Bot Framework 中的响应分支对话框/表单

    我们正在尝试使用 MS Bot Framework 但尚未完全弄清楚如何实现此场景 我们有一个 LUIS 对话框 类型 它工作正常并且经过适当的培训 以常见的三明治为例 LUIS 意图寻找的基本内容是用户询问订单状态 如果问题中提供了订单号
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • C++ 私有静态成员变量

    此 C 代码在编译时产生链接器错误 A h class A public static void f private static std vector
  • 'goto *foo' 其中 foo 不是指针。这是什么?

    我正在玩标签作为值 https gcc gnu org onlinedocs gcc Labels as Values html并最终得到这段代码 int foo 0 goto foo 我的 C C 经验告诉我 foo means dere
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • 枚举器上的 [[maybe_unused]]

    查看规格 maybe unused http en cppreference com w cpp language attributes 它指出 出现在类 typedef 变量 非静态数据成员 函数 枚举或枚举器的声明中 如果编译器对未使用
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • Active Directory UserPrincipal.Current.GetGroups() 返回本地组而不是 Web 服务器上的组

    以下内容在我的本地开发盒上效果很好 但是 当我将其移动到网络服务器时 它失败了 甚至不会记录错误 public static List
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对

随机推荐

  • KVO vs NSNotification vs 协议/委托?

    我知道何时使用哪个 但确切的用法我仍然不清楚 有人可以举例解释吗 如果您只想与一个对象对话 请使用委托 例如 tableView 有一个委托 只有一个对象应该负责处理它 如果您想告诉每个人发生了什么事 请使用通知 例如 在内存不足的情况下
  • 如何在 C++ 中打印带前缀 + 的正数

    有没有办法在 C 中打印整数及其符号 即默认情况下 如果数字为负数 我们会得到一个 印有标志 同理我们可以得到 在正数之前 int x 1 cout lt lt x lt
  • 使用 workbox-webpack-plugin 时,预缓存资源使用什么工作箱策略?

    我正在尝试了解工作箱和服务人员 使用workbox webpack plugin和GenerateSW模式时 用于预缓存资源的workbox策略是什么 IE 因为我似乎没有为预缓存资产设置路由 策略 以便服务工作线程更新这些资产的缓存 那么
  • PHP 本地化 - gettext 还是数组?

    设置多语言网站现在我需要决定为网站上的静态文本使用哪个选项 让我解释一下我的网站设置 然后您是否可以帮助我决定使用哪种解决方案 该站点是一个CMS系统 允许多个域指向同一目录并根据域名提供内容 因此所有域共享相同的代码 在网站上 我创建了称
  • iOS Safari:清除输入类型日期

    我制作了一个 NET mvc 应用程序 其中有一个字段 在 iPhone 在 Safari 中 上 一旦我单击此字段 就会出现一个本机 iOs 日期选择器 它有效 我可以选择一个日期 确认它 使用 完成 按钮 并提交表格 然后我再次访问此页
  • 克隆任意对象的函数

    我正在寻找一种方法来克隆在编译时 或运行时 我认为 未知的对象 问题的确切措辞是 编写一个可以克隆任意对象的函数 例如 将未知对象传递给函数 返回对象的深层副本 我猜我需要使用反射来读取函数和变量 然后了解如何创建一个新对象并将这些值分配给
  • 如何将三级词典转换为所需的格式?

    我有一个像这样的三级字典 data 2016 11 28 area1 am 0 007 pm 0 008 area2 am 0 0 pm 0 0 area3 am 0 01 pm 0 001 2016 11 29 area1 am 0 00
  • 以数据为中心的应用程序模型和面向对象的应用程序模型有什么区别?

    什么是以数据为中心的应用程序 与面向对象的应用程序模型有什么区别 这两个概念有些正交 以数据为中心的应用程序 http en wikipedia org wiki Database centric architecture数据库起着关键作用
  • docker-compose 无法启动

    我之前按照本演练成功创建了一系列 docker 容器 这些容器允许我使用 MySQLI PHP 和 phpmyadmin https gist github com jcavat 2ed51c6371b9b488d6a940ba104918
  • 使用指针作为函数参数时的段前缀

    我有一个汇编 c 问题 我刚刚读到了有关段前缀的内容 例如 ds varX 等 前缀对于逻辑地址的计算很重要 我也读到 默认值是 ds 一旦您使用 ebp 寄存器来计算地址 就会使用 ss 对于代码 cs 是默认值 这一切都是有道理的 现在
  • 如何将字符串中的表达式传递给 dplyr 0.7.2 中的动词

    我正在尝试实施我在网上找到的建议 但我的目标还差一半 这是一个可重现的示例 library tidyverse library dplyr library rlang data mtcars filter expr am 1 mutate
  • 有没有办法在 Google Directory API users.list 查询中使用“或”运算符?

    我想使用以下命令为 Google 域用户构建搜索查询用户列表 谷歌目录API 我尝试根据docs https developers google com admin sdk directory v1 guides search users
  • C 程序将一棵二叉搜索树复制到另一棵

    所以 在这里我想出了二叉搜索树程序 其中我创建了 2 个二叉树 tmp 和 tmp2 我试图将整个 tmp2 复制到 tmp 该节点作为用户的输入 但我遇到了一些分段错误 而且我也不太确定逻辑是否正确 这是整个程序 请让我知道 t cpy
  • 列表框无法显示子类变量

    我正在开发一个项目 其中用户输入动物值 姓名 年龄 性别等 并且用户输入的值显示在列表框中 这些类相互继承 以下是继承的工作原理 Animalclass 是所有类的父类 Mammal类继承自Animal class Dog类继承自Mamma
  • 如何将隐私政策添加到我的应用程序中,而不仅仅是在商品详情中

    我收到来自 Google Play 团队的以下电子邮件 您好 Google Play 开发者 我们的记录显示您的应用 XXXX 带有软件包 名称 com XXX XXX 目前违反了我们的用户数据政策 关于个人和敏感信息 政策问题 Googl
  • 在 CoordinatorLayout 中使用时页脚滚动出屏幕

    我有 HomeActivity 其中包含片段 底部有自定义导航视图 如下所示 通过单击个人资料图片 它会将该片段替换为 UserProfileView 片段 userProfileView 片段在 coordinatorLayout 内有折
  • Ruby 单引号与双引号

    有某种红宝石吗to s将变量更改为单引号字符串而不是双引号的方法 说我有 date Time now date to s 我希望输出为 2012 08 01 22 00 15 我该怎么做呢 或者有没有一种方法可以将 字符串转换为 字符串 T
  • 继承自 jQuery UI 对话框并调用重写方法

    下面的简单代码描述了我的问题 至少我希望如此 widget ui mydialog ui dialog create function How to call create method of dialog 我试着打电话 ui dialog
  • 使用 Oauth2 作为服务帐户的 Google 管理 API(教育版)- 403 错误

    我在使用 Google 新的 Admin SDK 时遇到困难 特别是使用 Oauth2 的 Directory API 我想我已经快到了 但我在尝试使用 Directory API 检索用户详细信息时遇到了困难 我正在使用 Google E
  • 使用 int 值初始化向量

    我想用这个 ASCII 代码初始化这个 char 向量 vector