- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
阅读有关整数提升和整数转换排名的信息,我发现了这个 link
1.If both operands have the same type, then no further conversion is needed.
2.Otherwise, if both operands have signed integer types or both have unsigned integer types, the operand with the type of lesser integerconversion rank is converted to the type of the operand with greaterrank.
3.Otherwise, if the operand that has unsigned integer type has rank greater or equal to the rank of the type of the other operand, thenthe operand with signed integer type is converted to the type of theoperand with unsigned integer type.
4.Otherwise, if the type of the operand with signed integer type can represent all of the values of the type of the operand with unsignedinteger type, then the operand with unsigned integer type is convertedto the type of the operand with signed integer type.
5.Otherwise, both operands are converted to the unsigned integer type corresponding to the type of the operand with signed integer type.
第 1 2 3 点完全清楚,但我仍然没有针对案例 4 和 5 提出示例。有人可以提供有关任何实现的示例吗?
据我所知,整数转换等级是:
_Bool < char < short < int < long < long long int
无论与类型相关的字节大小都等于或大于。对吧?
关于从一种类型到另一种类型的提升或转换。添加到最低类型的位是零或 1 还是最左边的位对此有影响?
我想知道位 View 中的过程,尤其是转换过程。
对于整数提升,它始终可以毫无疑问地保持值和符号。
最佳答案
如果你有一个无符号类型,它的等级比它正在运行的有符号类型小,并且它们有不同的大小,那么情况 4 适用。情况 5 那么如果两者是相同的尺寸。
例如,在我的系统上,int
是 32 位的,long
是 64 位的,long long
是 64 位的。如果您有以下情况:
unsigned int a; // range: 0 to 4294967295
long b; // range: -9223372036854775808 to 9223372036854775807
unsigned long c; // range: 0 to 18446744073709551615
long long d; // range: -9223372036854775808 to 9223372036854775807
对于涉及 a
和 b
的表达式,它们是 unsigned int
和 long
,任何有效的 unsigned int
可以放入一个long
。所以 a
在这种情况下被转换为 long
。
反之,对于包含 c
和 d
的表达式,它们是 unsigned long
和 long long
,a long long
不能保存 unsigned long
的所有值。所以两个操作数都转换为 unsigned long long
。
关于位级别的提升/转换过程中发生的情况,我们首先假设较低级别的类型小于较高级别的类型,并且有符号类型使用 2 的补码表示。
对于从 32 位 int
到 64 位 long
的转换,如果值为正数,则在左侧添加包含所有 0 位的 4 个字节。如果该值为负数,则在左侧添加包含所有 1 位的 4 个字节。例如,值 5
的表示从 0x00000005
更改为 0x0000000000000005
。对于值 -5
,表示从 0xfffffffb
更改为 0xfffffffffffffffb
。
关于c - 整数转换排名和提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38854596/
在本教程中,您将通过示例学习 JavaScript。 JavaScript 中的提升是一种在声明之前可以使用函数或变量的行为。例如, // using test before declarin
我正在学习javascript提升功能,发现下面的代码真的很困惑: var a = 1; function b() { a = 10; return; function a()
作为一个JS学习者,我发现了一件很有趣的事情,考虑下面的代码。 this.init = function (e) { var container = e.container;
Quasiquotes 的 Scala 文档在解释 Lifting 时提到了这一点: One can also combine lifting and unquote splicing: scala
我是新来的。到目前为止,我一直在使用 MVC 模型并使用基本的 session 管理模型,即在 session 中存储一个 token 并检查每个请求。 我正在尝试对lift做同样的事情,但我的 se
我当前使用的是Elasticsearch 2.4版,希望根据查询时间的增加或加权,根据我称为“类型”的字段对结果集进行微调。 例如 如果字段“类型”的值为“船”,则将权重或增强值增加4 如果字段“类型
一年多以来,我一直在大量使用 lift、return 以及 EitherT、ReaderT< 等构造函数,等等。我读过《Real World Haskell》、《Learn You a Haskell
我浏览了电梯的MegaProtoUser遇到这种结构:??("Last Name")。谁能解释一下,这是什么意思? 谢谢解答 最佳答案 它是在对象 S 上定义的: def ??(str : Strin
我有一个Solr索引,每个文档都是一个Event的信息。在我的架构中,Schedule 是日期类型的多值字段。我想知道是否可以使用计划日期来增加文档(多值字段中的任何日期)在未来并且最接近当前日期?我
作为测试,我正在尝试使用设计人员友好的模板在 lift 中创建一个表单。我正在使用 Lift 2.5 我已经设法使用 toForm 创建了一个工作表单,但我只是在探索所有可能的方法。 我的 html
如果这个问题已经被问到,我深表歉意。 是否可以清除已经设置的条件变量? 下面是我想要实现的详细信息: void worker_thread { while (wait_for_conditio
尝试学习Js,无法理解为什么DOM元素没有获取到值: var Car = function(loc) { var obj = Object.create(Car.prototype); obj
我想知道吊装。我知道如果全局函数名称与全局变量相同,函数会覆盖变量的名称。是吗? 这是我的代码。 (function() { console.log('console.log#1 ' + glob
这个问题已经有答案了: var functionName = function() {} vs function functionName() {} (41 个回答) 已关闭 7 年前。 在javas
我正在开发 Windows 资源管理器 namespace 扩展。我的应用程序是explorer.exe在某个时候加载和使用的动态库。我需要我的 DLL 在 C:\中创建文件,有时在其他需要提升才能执
背景: GitHub 属于客户。我们团队中有一些新手,他们有时会错过基本的命名约定和其他编码协议(protocol)。所以,如果哪位前辈想在内部review,除了创建PR,别无他法。但是这个 PR 对
我们需要在运行时更改 HKEY_LOCAL_MACHINE 的一些设置。 如果需要在运行时,是否可以提示 uac 提升,或者我是否必须启动第二个提升的进程来完成“肮脏的工作”? 最佳答案 我会以提升的
看着Haskell文档,提升似乎基本上是 fmap 的概括,允许映射具有多个参数的函数。 Wikipedia然而,关于提升的文章给出了不同的观点,根据类别中的态射来定义“提升”,以及它如何与类别中的其
ggplot2 package 很容易成为我用过的最好的绘图系统,除了对于较大的数据集(约 50k 点)性能不是很好。我正在研究通过 Shiny 提供网络分析,使用 ggplot2作为绘图后端,但我对
是否可以提升 powershell 脚本的权限,以便没有管理员权限的用户可以运行该脚本?我们的网络管理员正在尝试寻找更省时的方法来完成某些任务,目前他们必须使用远程桌面...使用 PS 脚本将其自动化
我是一名优秀的程序员,十分优秀!