当我混合使用有符号和无符号类型时会发生什么?

皮耶罗·波雷利(Piero Borrelli)

我正在研究C ++语言,并且对类型转换有些疑问,能否请您解释一下这样的表达式中发生了什么:

unsigned int u = 10; 
int a = -42; 
std::cout << u - a << std::endl;

在这里,我知道如果我有两个数学运算符时应用规则,结果将是52.但是我想知道当将a转换为无符号值的编译器创建无符号类型的临时变量时会发生什么?现在,表达式应为10 -4294967254。

蚂蚁

简单来说,如果混合类型同等级的(序列中intlong intlong long int),无符号的类型“胜”和计算是无符号类型内进行。结果是相同的无符号类型。

如果您混合使用不同等级的类型,则排名较高的类型“获胜”(如果它可以代表等级较低的所有值)。在该类型内执行计算。结果就是这种类型。

最后,如果排名较高的类型不能代表排名较低的类型的所有值,则使用排名较高的类型的无符号版本。结果就是这种类型。

在您的情况下,您混合了相同等级(intunsigned int)的类型,这意味着整个表达式将在unsigned inttype中求值正如您正确指出的那样,该表达式现在为10 - 4294967254(32位int)。无符号类型遵循以2^324294967296)为模的模算术规则如果您仔细计算结果(可以用数学方式表示10 - 4294967254 + 4294967296),结果将与预期的一样52

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我们在休眠状态下使fetch =“ join”和lazy =“ true”时会发生什么

来自分类Dev

当我在Bash脚本中对函数使用`&`时会发生什么?

来自分类Dev

MySql-当我用“ and”更新时会发生什么

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

Java-当我们在自己的类中创建类型为class的数据类型时会发生什么?

来自分类Dev

在视觉上,当您使用&符号调用同一进程时会发生什么

来自分类Dev

别名相同的有符号和无符号类型的别名

来自分类Dev

当有人拉着我推时会发生什么?

来自分类Dev

当我绑定到AliasProperty时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我多次调用requestAnimationFrame时会发生什么

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

为什么数字强制转换为无符号类型时会扩展符号?

来自分类Dev

vhdl有符号和无符号类型字节序

来自分类Dev

当我在抽象方法上使用call_user_func()时会发生什么?

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

当我截断正在使用的文件时会发生什么?

来自分类Dev

当有人拉着我推时会发生什么?

来自分类Dev

当我将%esp移至%ebp时会发生什么?

来自分类Dev

当我尝试使用进程ID小于-1的kill时会发生什么?

来自分类Dev

当我不输入期望的命令时会发生什么?

来自分类Dev

当我使用“ nmap google.com”命令时会发生什么?

来自分类Dev

当我在C ++中对类使用vector时会发生什么

来自分类Dev

当我忘记登录TTY时会发生什么?

来自分类Dev

当我使用“ dd”覆盖运行Ubuntu的磁盘时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我取消订阅 Observable 链时会发生什么?

来自分类Dev

当我同时使用主机卷(绑定安装)和命名卷(一种 docker 管理的卷)时会发生什么?

Related 相关文章

  1. 1

    当我们在休眠状态下使fetch =“ join”和lazy =“ true”时会发生什么

  2. 2

    当我在Bash脚本中对函数使用`&`时会发生什么?

  3. 3

    MySql-当我用“ and”更新时会发生什么

  4. 4

    当我放弃对iOS 6的支持时会发生什么?

  5. 5

    Java-当我们在自己的类中创建类型为class的数据类型时会发生什么?

  6. 6

    在视觉上,当您使用&符号调用同一进程时会发生什么

  7. 7

    别名相同的有符号和无符号类型的别名

  8. 8

    当有人拉着我推时会发生什么?

  9. 9

    当我绑定到AliasProperty时会发生什么?

  10. 10

    当我使用多个模拟时间时会发生什么?

  11. 11

    当我多次调用requestAnimationFrame时会发生什么

  12. 12

    当我调用“ BufferStrategy.show()”时会发生什么?

  13. 13

    为什么数字强制转换为无符号类型时会扩展符号?

  14. 14

    vhdl有符号和无符号类型字节序

  15. 15

    当我在抽象方法上使用call_user_func()时会发生什么?

  16. 16

    当我放弃对iOS 6的支持时会发生什么?

  17. 17

    当我截断正在使用的文件时会发生什么?

  18. 18

    当有人拉着我推时会发生什么?

  19. 19

    当我将%esp移至%ebp时会发生什么?

  20. 20

    当我尝试使用进程ID小于-1的kill时会发生什么?

  21. 21

    当我不输入期望的命令时会发生什么?

  22. 22

    当我使用“ nmap google.com”命令时会发生什么?

  23. 23

    当我在C ++中对类使用vector时会发生什么

  24. 24

    当我忘记登录TTY时会发生什么?

  25. 25

    当我使用“ dd”覆盖运行Ubuntu的磁盘时会发生什么?

  26. 26

    当我使用多个模拟时间时会发生什么?

  27. 27

    当我调用“ BufferStrategy.show()”时会发生什么?

  28. 28

    当我取消订阅 Observable 链时会发生什么?

  29. 29

    当我同时使用主机卷(绑定安装)和命名卷(一种 docker 管理的卷)时会发生什么?

热门标签

归档