C++ 中无符号整数提升

2024-01-02

int main() {
    unsigned i = 5;
    int j = -10; 
    double d = i + j;
    long l = i + j;
    int k = i + j;
    std::cout << d << "\n";     //4.29497e+09
    std::cout << l << "\n";     //4294967291
    std::cout << k << "\n";     //-5
    std::cout << i + j << "\n"; //4294967291
}

我相信signed int被提升为unsigned在进行算术运算符之前。
While -10转换为无符号unsigned integer underflow (这是正确的术语吗?)会发生,并且在添加后打印4294967291.

为什么这种情况没有发生int k哪个打印-5?


执行算术运算符的过程涉及到使两个值具有相同类型的转换。这个过程的名称是寻找普通型,对于以下情况int and unsigned int,转换称为常见的算术转换 http://en.cppreference.com/w/cpp/language/operator_arithmetic。期限晋升 http://en.cppreference.com/w/cpp/language/implicit_conversion#Integral_promotion在这种特殊情况下不使用。

如果是i + j, the int被转换为unsigned int, 通过增加UINT_MAX + 1到它。所以结果是i + j is UINT_MAX - 4,在您的系统上是4294967291.

然后,您可以将该值存储在各种数据类型中;唯一需要进一步解释的输出是k。价值UINT_MAX - 4无法适应int。这就是所谓的超出范围的分配结果值是实现定义的。在你的系统上它显然分配了int具有相同表示形式的值unsigned int value.

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

C++ 中无符号整数提升 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • React-native init 的问题/警告(无锁文件;connect2.x 系列已弃用;react 具有未满足的对等依赖性)

    我正在使用 React Native init 来初始化我的项目 并且我收到了一些警告 如果我现在不处理它们 我确信这些警告会在后面咬我 粗体字是相关消息 我不完全确定该如何处理它们 任何人都可以告诉我如何解决这个问题 如果我做错了什么而收
  • 在 shell 脚本中连接到 sqlplus 并运行 SQL 脚本

    我有一个 sql 文件 它是一堆 oracle pl sql 命令 我想创建一个 shell 脚本来运行这些命令 假设user pass server是我的凭据 执行此类任务的 shell 脚本是什么 例如 sqlplus s admin
  • VS Code:选择或删除未选择文本的块注释的快捷方式

    I know there is a shortcut for comment and uncomment code block SHIFT ALT A but is there a way to quickly select or even
  • 在Android中使用GWT源代码

    我有一个基于 GWT 的网络应用程序 我使用相同的代码库来定位桌面和移动平台 我使用基于GIN的Model View Presenter和依赖注入来实现跨平台兼容的目标 然而 为了在 Android 上获得更好的性能和原生外观 我想编写一个
  • 如何解决 WSAEWOULDBLOCK 错误

    我有一个 win7 应用程序 我在 TCP 连接上向 2 个客户端发送数据 在测试时我发现我得到了WSAEWOULDBLOCK我的套接字经常出错 到 解决这个错误我在它周围放置了一个 while 循环 do size t value sen
  • pytorch / numpy 中具有任意和可变维数的部分切片

    给定 numpy 或 pytorch 中的二维张量 我可以同时沿所有维度进行部分切片 如下所示 gt gt gt import numpy as np gt gt gt a np arange 2 3 reshape 2 3 array 0
  • 是否可以在 jtable 中调用自动行排序器

    无论如何 是否可以在使用创建的 jtable 中调用自动行排序器 setAutoCreateRowSorter true 我试图让它按默认列排序 而用户不必单击列标题 table getRowSorter toggleSortOrder m
  • 从 QML 访问 C++ QList

    如果我有 C 中的内容列表 如何将其公开给 QML 在 Qt5 QtQuick 2 中 貌似QML只能看懂QObject 派生类 这是一个问题 因为QObjects 不能放入QList或复制 我该怎么做呢 struct Thing int
  • 将datareader绑定到asp图表控件

    本质上 我有一个数据读取器 理论上它会调用存储过程 并绑定返回到图表的查询 这是我想要绑定到图表的数据 ForecastDesc Previous Current Budget Forecast 4 Forecast 7 Period1 9
  • Android:Fragment 和 ViewPager 始终从第一个位置开始

    我为我的 Android 应用程序使用主 细节设计 如果我单击 ItemListActivity 中列表视图中的某个项目 则该位置将分配给我的 ItemDetailActivity 这个实现了 ViewPager 和 FragmentSta
  • 在 Play 2 框架上配置 QueryDSL

    我尝试配置QueryDSL http www querydsl com 在 Play Framework 使用 Java 中 但没有成功 我在Google上搜索过类似的问题 发现如下 1 查询DSL和播放 https stackoverfl
  • 如何从 postgres 只获取没有区域的时间戳?

    我在 postgres 中创建了一个带有一些时间戳列的表 create table glacier restore progress 4 id SERIAL NOT NULL email VARCHAR 50 restore start t
  • 为什么Fragment的onCreate()有时会先于Activity的onCreate()调用?

    最近我遇到了一个难以重现的问题 当片段尝试使用 Activity 中的数据初始化 ArrayAdapter 时 就会发生 NPE Activity 的 onCreate 方法中初始化的默认列表 Override protected void
  • 如何在 tkinter 文本小部件中标记文本

    请帮我解决这个代码 from tkinter import root Tk def click t insert INSERT t mark names t mark set INSERT 1 1 t mark gravity INSERT
  • JAVA 中列表上的聚合函数

    我有一个 Java 对象列表 我需要应用聚合函数 例如在数据库上进行选择 来减少它 注意 数据是根据多个数据库和服务调用计算得出的 我期望有数千行 并且每次执行每行始终具有相同数量的 单元格 该数量在执行之间会发生变化 Samples 如果
  • 在 Heroku 上部署战争所需的步骤

    我有带有 Maven 的 spring 源工具 我有一个 Java 项目想要部署在 Heroku 上 有人可以告诉我在 Heroku 上部署的步骤吗 非常感谢 Create warMaven 中的文件 您可以通过参考来做到这一点here h
  • Akka 适合短暂网络覆盖的系统吗?

    Akka 是否适合在节点需要进出 WiFi 覆盖范围的系统中使用 必须考虑哪些方面 例如首选哪些传输协议 Akka is适用于具有瞬态网络覆盖的系统 正如 Viktor 在对该问题的评论中指出的那样 主管层次结构可用于处理未交付错误 有关更
  • H2DB 中如何像 MySql 中那样获取 sql 转储?

    我有 H2DB 数据库 它将数据存储在文件中 我有3个文件 test 18 log db test data db and test index db 我想要像我使用时一样获取 SQL 转储文件mysqldump 是否可以 是的 有多种解决
  • 喷气背包上的调整大小组合不起作用

    我正在使用 jetpack compose 1 0 0 beta09 在我的项目上实现一个屏幕 但我在屏幕上遇到了一个问题 即使键盘打开 页脚也需要始终可见 我知道我们有android 上的 adjustResize 在正常活动中解决了这个
  • C++ 中无符号整数提升

    int main unsigned i 5 int j 10 double d i j long l i j int k i j std cout lt lt d lt lt n 4 29497e 09 std cout lt lt l l