char 类型乘以另一个 char

2023-12-02

C/C++ 中两个字符相乘的结果是什么类型?

unsigned char a = 70;
unsigned char b = 58;
cout << a*b << endl; // prints 4060, means no overflow
cout << (unsigned int)(unsigned char)(a*b) << endl; // prints 220, means overflow

我期望两个 T 类型的数字(例如 char、short、int)相乘的结果变成 T。看起来是int for char因为sizeof(a*b) is 4.

我编写了一个简单的函数来检查乘法结果的大小:

template<class T>
void print_sizeof_mult(){
  T a;
  T b;
  cout << sizeof(a*b) << endl;
}

print_sizeof_mult<char>(), print_sizeof_mult<short>(), and print_sizeof_mult<int>()是 4 和print_sizeof_mult<long>() is 8.

这些结果仅适用于我的特定编译器和机器架构吗?或者是否在某处记录了 C/C++ 中基本操作的输出是什么类型?


根据 C++ 标准 (4.5积分促销)

1 除 bool、char16_t、char32_t 或之外的整数类型的纯右值 wchar_t 的整数转换等级 (4.13) 小于 如果 int 可以表示所有,则 int 可以转换为 int 类型的纯右值 源类型的值;否则,源右值可以是 转换为 unsigned int 类型的纯右值。

和(5 个表达式)

10 许多二元运算符期望算术或操作数 枚举类型导致转换并以类似的方式产生结果类型 方式。目的是产生一个通用类型,这也是 结果。这种模式称为通常的算术转换, 其定义如下:

....

  • 否则,积分促销(4.5)应在两者上进行 操作数.61 那么以下规则应适用于升级的 操作数:

最后(5.6 乘法运算符)

2 * 和 / 的操作数应为算术或无作用域 枚举类型; % 的操作数应具有整数或无作用域 枚举类型。通常的算术转换是在 操作数并确定结果的类型。

Types char and short转化排名低于该类型的排名int.

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

char 类型乘以另一个 char 的相关文章

随机推荐

  • 使用 runas 命令运行脚本

    我需要以管理员身份运行安装脚本 我尝试了几件事 但没有一个有效 runas user Administrator install bat shell 要求输入密码 然后打开一个新的 shell 窗口 并立即关闭它而不执行脚本 runas u
  • 正则表达式查找sql​​注释

    我正在尝试找到一个可用于匹配 SQL 样式注释的正则表达式 单行注释相当简单 但是我不知道如何匹配多行注释 我不需要实际的替换代码 只需要正则表达式来匹配注释 例如 select from valid sql1 select from va
  • 如何使用 JavaScript 创建 div 并设置其样式?

    如何使用 JavaScript 创建包含内容的 div 并设置其样式 并附加到页面 我知道这是可能的 但是怎么可能呢 var div document createElement div div style width 100px div
  • 尝试获取 jstree 中 Change_state 上已检查项目的列表

    Using jsTree pre1 0 fix 1 我想获取以下列表id代表所有已检查的项目 或者更好的是 带有以下内容的 JSON 对象 id以及每个选中项目的文本 然后我将用它进行 ajax 调用 此外 每当检查或未检查的内容发生状态更
  • 警告:file_get_contents():https:// 包装器在服务器配置中被所有禁用

    当我上传带有邮政编码的 csv 文件时 它将转换并保存纬度和经度 将邮政编码转换为经纬度时发生错误 在我的本地主机中它工作正常 当我在实时服务器中上传时 我收到这个错误警告 file get contents https 包装器在服务器配置
  • java代码访问drools guvnor

    我们有一个项目要求通过Web应用程序访问guvnor 有人可以让我知道如何通过java代码访问guvnor吗 抵押贷款示例已经有一些示例代码 Drools Expert手册大概有详细解释 这是代码 private static Knowle
  • 带有透明三角形的导航栏活动链接

    你知道如何使用 CSS 来做到这一点吗 在我的导航栏中 我希望看到活动链接的透明三角形 如果我创建一个带有透明三角形的 PNG 图像并像这样使用它 background rgba 0 0 0 0 4 url triangle png no
  • 非二叉树高度

    有没有办法找到不一定是二叉树的高度 对于二叉树的高度有很多算法 但它们都不适用于非二叉树 就在这里 递归方法可能类似于 public class TreeNode
  • Javascript OO 参考这个

    简短描述 我使用 OO Javascript 和函数声明 new 关键字和原型方法 下面的示例 我需要一种方法来在对象的每个方法中引用 self 对象 this 似乎只有在我直接调用该方法时才有效 否则 this 似乎指的是调用该方法的任何
  • 条件运算符“?:”

    我昨天完成了 C 语言编程考试 有一个问题我无法回答 尽管我今天学习了 但我也想不出解决方案 所以我们有这个 int A 1 B 2 C 3 X 1 X B C A C A C A printf A d B d C d X d n A B
  • Redux 状态没有立即更新?

    setCurrentPage 只是将对象存储到我的全局存储中的页面对象中 所以如果我在设置后尝试立即访问它 似乎有延迟并且对象是空的 但是如果我在按钮中console log相同的对象并单击它 它就会被填充 redux 是否存在我不知道的延
  • 有没有办法让我的 Android 应用程序在安装时运行一些自定义代码?

    我对为我的应用程序运行一些反盗版措施有一些想法 所以我想知道是否可以这样做来在安装时对应用程序进行签名 在第一次启动时运行代码是不好的 因为有人仍然可以复制 apk 而不运行它 不幸的是 无法在 Android 上安装时运行代码 只能在首次
  • Intellij-IDEA GUI 表单的 Ant 构建

    我有一个使用表单的项目 它编译并运行得很好 但是当用生成的蚂蚁它不运行 我的 ant 文件有java2任务我将所需的 jar 添加到我的 lib 文件夹中
  • 测试 IInterruptableJob

    我有以下代码 private static void InterruptAJob JobKey foundJobKey IScheduler sched if null foundJobKey sched Interrupt foundJo
  • 泛型方法重载的问题

    我有以下方法 void s
  • Python3 Flask上传文件在服务器内存中

    我在Python3中使用Flask作为网络服务器 并使用Flask的上传功能 将文件上传到服务器会产生werkzeug datastructures FileStorage object 我需要此文件的功能之一 还需要能够从路径对象打开文件
  • 如何将多个 JSON 字符串合并为一个 ( Java )

    我尝试寻找一个可以使用的JAVA库 但没有成功 是否有一个 gson jackson groovy 库可以用来将多个 JSON 字符串组合或合并到一个有效负载中 例子 JSON 负载 A B 和 C 我希望将 B 和 C 添加 合并到 A
  • 组织原型 javascript,同时保留对象引用和继承

    我使用 JavaScript 原型和继承构建了一个大型应用程序 但我很难组织我的代码 例如 我有一个类轮播 它有很多这样的功能 Carousel prototype next function Carousel prototype prev
  • JSON.NET 反序列化 - 单个结果与数组

    我在尝试确定如何使我的序列化能够正确访问单个结果以及数组时遇到困难 当我进行 REST 调用在服务器上查找某些内容时 有时它会返回模型数组 但如果搜索结果只有一个模型 则不会作为错误返回 这是当我收到无法反序列化的异常时 因为对象属性需要一
  • char 类型乘以另一个 char

    C C 中两个字符相乘的结果是什么类型 unsigned char a 70 unsigned char b 58 cout lt lt a b lt lt endl prints 4060 means no overflow cout l