为什么余数运算符会因不同的数据类型而失败?

鲁多

我在代码中遇到了一个烦人的错误:

length = 60;
index = -1;
rem = index % length;

在调试器中,我看到它的rem值是15,而不是-1,这对我来说没有任何意义。原来,这length是类型的无符号整型index是类型INT将类型更改lengthint可以解决此问题。

但是,我不知道出了什么问题。给定余数运算((a/b)*b + a%b == a的定义,由于类型不同,我可能曾预计会出现符号错误,但我并未预期随机值15。(尽管60/4 = 15,所以也许有些位被移位了吗?)

我的问题是:为什么当以有符号和无符号整数作为操作数出现时,余数运算会失败?哪些实施细节可能导致此情况?

(使用gcc 4.8.2)

我们

您有1个无符号变量和1个带符号变量作为二进制运算符的操作数%,在这种情况下,带符号变量将转换为无符号类型。(您可以在此处阅读这些转换规则的摘要

因此,您的-1将转换为无符号值,即(假设int为32位)0xffffffff 0xffffffff % 6015

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么三元运算符会因类型不匹配错误而失败?

来自分类Dev

将值直接传递给sizeof运算符时,为什么数据类型的大小不同?

来自分类Dev

C ++:具有不同数据类型的赋值运算符的名称是什么

来自分类Java

在Scala中,为什么余数(%)运算符会返回负数?

来自分类Dev

为什么 AND、OR 运算符会为 python 中的 Boolean 和 set 等数据类型提供一侧输出?

来自分类Java

在Java中,为什么在数据类型分配内存之前不使用new运算符?

来自分类Dev

使用“+”运算符是否会转换为 Python 中列表的更高数据类型?

来自分类Dev

Elm的余数运算符是什么

来自分类Dev

不同数据类型之间的php逻辑运算符“或”

来自分类Dev

php中不同数据类型和运算符的数组

来自分类Dev

为什么没有为数据类型定义运算符<时,为什么std :: map代码会编译?

来自分类Dev

内置数据类型和枚举的运算符重载

来自分类Dev

是否可以重载本机数据类型的运算符?

来自分类Dev

混合数据类型的条件运算符?

来自分类Dev

sizeof()运算符的输出数据类型

来自分类Dev

数据类型上的sizeof运算符错误

来自分类Dev

为什么数据类型会冲突?

来自分类Dev

接口,继承,隐式运算符和类型转换,为什么会这样?

来自分类Dev

为什么使用条件运算符会导致相交类型?

来自分类Dev

在以下上下文中使用条件运算符时,为什么会有数据类型na?

来自分类Dev

为什么少于运算符接受不同类型的参数,而std :: min不接受?

来自分类Dev

为什么一元运算符返回的类型与其操作数不同?

来自分类Dev

为什么 vb.nets '=' 运算符以这种方式评估不同的类型?

来自分类Dev

用于具有不同数据类型的两个对象的 C++ 重载 + 运算符

来自分类Dev

为什么pycharm中的'in'运算符使我失败?

来自分类Dev

为什么对箭头(->)运算符的调用失败?

来自分类Dev

为什么AND SQL运算符会使查询失败?

来自分类Dev

为什么运算符**在运算符^工作的地方失败?

来自分类Dev

错误是什么数据类型varchar和datetime2在add运算符中不兼容

Related 相关文章

  1. 1

    为什么三元运算符会因类型不匹配错误而失败?

  2. 2

    将值直接传递给sizeof运算符时,为什么数据类型的大小不同?

  3. 3

    C ++:具有不同数据类型的赋值运算符的名称是什么

  4. 4

    在Scala中,为什么余数(%)运算符会返回负数?

  5. 5

    为什么 AND、OR 运算符会为 python 中的 Boolean 和 set 等数据类型提供一侧输出?

  6. 6

    在Java中,为什么在数据类型分配内存之前不使用new运算符?

  7. 7

    使用“+”运算符是否会转换为 Python 中列表的更高数据类型?

  8. 8

    Elm的余数运算符是什么

  9. 9

    不同数据类型之间的php逻辑运算符“或”

  10. 10

    php中不同数据类型和运算符的数组

  11. 11

    为什么没有为数据类型定义运算符<时,为什么std :: map代码会编译?

  12. 12

    内置数据类型和枚举的运算符重载

  13. 13

    是否可以重载本机数据类型的运算符?

  14. 14

    混合数据类型的条件运算符?

  15. 15

    sizeof()运算符的输出数据类型

  16. 16

    数据类型上的sizeof运算符错误

  17. 17

    为什么数据类型会冲突?

  18. 18

    接口,继承,隐式运算符和类型转换,为什么会这样?

  19. 19

    为什么使用条件运算符会导致相交类型?

  20. 20

    在以下上下文中使用条件运算符时,为什么会有数据类型na?

  21. 21

    为什么少于运算符接受不同类型的参数,而std :: min不接受?

  22. 22

    为什么一元运算符返回的类型与其操作数不同?

  23. 23

    为什么 vb.nets '=' 运算符以这种方式评估不同的类型?

  24. 24

    用于具有不同数据类型的两个对象的 C++ 重载 + 运算符

  25. 25

    为什么pycharm中的'in'运算符使我失败?

  26. 26

    为什么对箭头(->)运算符的调用失败?

  27. 27

    为什么AND SQL运算符会使查询失败?

  28. 28

    为什么运算符**在运算符^工作的地方失败?

  29. 29

    错误是什么数据类型varchar和datetime2在add运算符中不兼容

热门标签

归档