为什么将short转换为char是一个狭窄的转换?

塞德

缩小转换是指将可以容纳较大值的数据类型放入可以容纳较小值的数据类型。

long l = 4L;
int i = (int)l;

但是,我不明白为什么将short转换为char会缩小转换的范围,但是我有直觉,这与这两种数据类型的有符号/无符号有关,但是我无法解释原因。

short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535 

由于它们都是16位并且可以容纳相同数量的值,因此看起来将是扩大的转换,或者至少不会缩小或扩大。

    System.out.println((int)Character.MIN_VALUE); //0
    System.out.println((int)Character.MAX_VALUE); //65535 
    System.out.println(Short.MIN_VALUE); //-32768
    System.out.println(Short.MAX_VALUE); //32767
    //65535 = 32768+32767
阿卜杜勒·法蒂尔|

这是因为ashort可以保留负值,而char您可能从中看不到Character.MIN_VALUE让我举几个例子。

  short s = -124;
  char c = 124; // OK, no compile time error
  char d = -124; // NOT OK, compile time error since char cannot hold -ve values
  char e = s; // NOT OK, compile time error since a short might have -ve values which char won't be able to hold
  char f = (char)s; // OK, type casting. The negative number -124 gets converted to 65412 so that char can hold it
  System.out.println((short)f); // -124, gets converted back to a number short can hold because short won't be able to hold 65412
  System.out.println((int)f); // 65412, gets converted to 65412 because int can easily hold it.  

A(负)号-n转换为时char,变得2^16-n因此,-124成为
2^16-124 = 65412

我希望这有帮助。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将char转换为short

来自分类Dev

将 char* 转换为 short*

来自分类Dev

为什么将通用返回类型强制转换为另一个通用类型?

来自分类Java

为什么要“将myVariable转换为最终的一个元素数组”?

来自分类Dev

为什么将类型T&转换为T会创建一个临时的?

来自分类Dev

为什么将 Python dict 转换为元组会返回一个键元组?

来自分类Dev

我将扫描仪int转换为char,为什么这会给我一个不匹配的异常?

来自分类Dev

什么是狭窄的原型,为什么我需要一个?

来自分类Dev

将sbyte []转换为bool [],将char []转换为short []

来自分类Dev

为什么在C ++中可以将一个类的指针强制转换为另一类的指针?

来自分类Dev

为什么将输出从美丽的汤转换为文本会给我一个错误?

来自分类Dev

将整数转换为ASCII然后又返回整数后,为什么会得到一个不同的值?

来自分类Dev

为什么一个特定的SQL Server数据库无法将VARCHAR转换为NUMERIC?

来自分类Dev

当我将浮点值转换为字符串时,为什么会有一个“ E”字符?

来自分类Dev

为什么将 csv_reader 对象转换为列表会输出一个空列表?

来自分类Java

为什么在Java中允许将double转换为char?

来自分类Dev

如何将一个元素字符串转换为char?

来自分类Dev

将std :: array <char,10>的最后一个字符转换为int

来自分类Dev

如何将一个日期的varchar(6)转换为char(8)

来自分类Dev

将单个char数组转换为一个多维数组

来自分类Dev

为什么将unsigned short(乘)无符号short转换为signed int?

来自分类Dev

为什么我不能将一列从一个枚举转换为另一个?

来自分类Dev

为什么不能将一个类隐式转换为其通用基类?

来自分类Dev

为什么GNU的expand会将一个制表符转换为少于8列?

来自分类Dev

为什么仅添加一个PSCustomObject时PowerShell会将ArrayList转换为PSCustomObject?

来自分类Dev

为什么不能将一个泛型类型的实例转换为另一个实例?

来自分类Dev

将大型char8的c数组转换为short16的最快方法是什么?

来自分类Dev

将两个ggplots转换为一个

来自分类Dev

为什么我可以将char *隐式转换为const char *,而不是无符号char *

Related 相关文章

  1. 1

    将char转换为short

  2. 2

    将 char* 转换为 short*

  3. 3

    为什么将通用返回类型强制转换为另一个通用类型?

  4. 4

    为什么要“将myVariable转换为最终的一个元素数组”?

  5. 5

    为什么将类型T&转换为T会创建一个临时的?

  6. 6

    为什么将 Python dict 转换为元组会返回一个键元组?

  7. 7

    我将扫描仪int转换为char,为什么这会给我一个不匹配的异常?

  8. 8

    什么是狭窄的原型,为什么我需要一个?

  9. 9

    将sbyte []转换为bool [],将char []转换为short []

  10. 10

    为什么在C ++中可以将一个类的指针强制转换为另一类的指针?

  11. 11

    为什么将输出从美丽的汤转换为文本会给我一个错误?

  12. 12

    将整数转换为ASCII然后又返回整数后,为什么会得到一个不同的值?

  13. 13

    为什么一个特定的SQL Server数据库无法将VARCHAR转换为NUMERIC?

  14. 14

    当我将浮点值转换为字符串时,为什么会有一个“ E”字符?

  15. 15

    为什么将 csv_reader 对象转换为列表会输出一个空列表?

  16. 16

    为什么在Java中允许将double转换为char?

  17. 17

    如何将一个元素字符串转换为char?

  18. 18

    将std :: array <char,10>的最后一个字符转换为int

  19. 19

    如何将一个日期的varchar(6)转换为char(8)

  20. 20

    将单个char数组转换为一个多维数组

  21. 21

    为什么将unsigned short(乘)无符号short转换为signed int?

  22. 22

    为什么我不能将一列从一个枚举转换为另一个?

  23. 23

    为什么不能将一个类隐式转换为其通用基类?

  24. 24

    为什么GNU的expand会将一个制表符转换为少于8列?

  25. 25

    为什么仅添加一个PSCustomObject时PowerShell会将ArrayList转换为PSCustomObject?

  26. 26

    为什么不能将一个泛型类型的实例转换为另一个实例?

  27. 27

    将大型char8的c数组转换为short16的最快方法是什么?

  28. 28

    将两个ggplots转换为一个

  29. 29

    为什么我可以将char *隐式转换为const char *,而不是无符号char *

热门标签

归档