C#:为什么0xFFFFFFFF表示-1时是uint?

好人

我不明白为什么C#在将int类型表示为-1时,也将原义0xFFFFFFFF视为uint。

将以下代码输入到此处显示的立即窗口中,并显示输出:

int i = -1;

-1

string s = i.ToString("x");

“ ffffffff”

int j = Convert.ToInt32(s, 16);

-1

int k = 0xFFFFFFFF;

无法将类型'uint'隐式转换为'int'。存在显式转换(您是否缺少演员表?)

int l = Convert.ToInt32(0xFFFFFFFF);

未处理OverflowException:对于Int32,值太大或太小。

为什么可以无问题地转换字符串十六进制数,而仅使用未检查的形式转换文字呢?

TJ人群

为什么0xFFFFFFFF表示-1时是uint?

因为您在写不是在写位模式

i = 0xFFFFFFFF;

您正在按照C#的规则为整数文字写数字使用C#的整数文字,要写一个负数,我们要写一个a,-后跟数字的大小(例如-1),而不是我们想要的位模式。这是真的好,我们预计不会写的位模式,这将使它真正尴尬的写负数。当我想要-3时,我不想写0xFFFFFFFD:-)而且我真的不想不必F根据类型的大小(0xFFFFFFFFFFFFFFFD对于long -3来更改前导s的数量

通过上面的链接可以说选择文字类型的规则如下:

如果文字没有后缀,它具有第一这些类型的,其中它的值可以表示的:intuintlongulong

0xFFFFFFFF不适合int最大为正值的0x7FFFFFFF,因此列表中的下一个是uint,它确实适合。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么将uint32值与0xFFFFFFFF相加?

来自分类Dev

为什么-1 >> 1和0xFFFFFFFF >> 1会产生不同的结果?

来自分类Dev

为什么一个int变量的值为'0xffffffff` >> 1!= 0x7fffffff?

来自分类Dev

当尝试`uint mask =〜0;`时,常量值'-1'不能转换为'uint'。

来自分类Dev

为什么是UINT32_MAX + 1 = 0?

来自分类Dev

程序“ [12460] TestProject.exe”已退出,代码为-1(0xffffffff)

来自分类Dev

斯威夫特:为什么UInt.max == -1

来自分类Dev

为什么要使用Float(arc4random())/ 0xFFFFFFFF而不是drand()

来自分类Dev

在此示例中,0xFFFFFFFF在做什么?

来自分类Dev

uint = 0时,for循环已崩溃

来自分类Dev

C编程:为什么(0 || -1)== 1?

来自分类Dev

在C ++中使用XOR 0xffffffff或〜翻转位?

来自分类Dev

为什么退出代码0表示成功而1表示失败

来自分类Dev

为什么“ UInt64(1 << 63)”崩溃?

来自分类Dev

当我查看Uint8Array和Uint32Array的元素时,为什么它们具有不同的二进制表示形式?

来自分类Dev

WslRegisterDistribution失败,错误为:0xffffffff

来自分类Dev

unsigned long 大于 0xFFFFFFFF

来自分类Dev

“ PUSH 0xFFFFFFFF”在函数序言中是什么意思?

来自分类Dev

枚举的最后一个_BIG_ENUM = 0xFFFFFFFF是什么意思?

来自分类常见问题

为什么有时仅将memcmp(a,b,4)优化为uint32比较?

来自分类Dev

0在Tensor(“ decode_jpeg:0”,shape =(?,?,1),dtype = uint8)中代表什么?

来自分类Dev

为什么在C#中线程数大于1

来自分类Dev

为什么在C#中线程数大于1

来自分类Dev

如果我知道数据在哪里,例如0xffffffff7fffd9d8与0x10019c1e0,我能对数据有什么了解?

来自分类Dev

为什么numeric_limits <uint16_t> :: max()不等于-1?

来自分类常见问题

为什么NaN ^ 0 == 1

来自分类Dev

为什么〜0返回-1?

来自分类Dev

为什么(1/90)= 0?

来自分类Dev

尝试在C#中的UInt16上执行按位不(〜)时出错

Related 相关文章

  1. 1

    为什么将uint32值与0xFFFFFFFF相加?

  2. 2

    为什么-1 >> 1和0xFFFFFFFF >> 1会产生不同的结果?

  3. 3

    为什么一个int变量的值为'0xffffffff` >> 1!= 0x7fffffff?

  4. 4

    当尝试`uint mask =〜0;`时,常量值'-1'不能转换为'uint'。

  5. 5

    为什么是UINT32_MAX + 1 = 0?

  6. 6

    程序“ [12460] TestProject.exe”已退出,代码为-1(0xffffffff)

  7. 7

    斯威夫特:为什么UInt.max == -1

  8. 8

    为什么要使用Float(arc4random())/ 0xFFFFFFFF而不是drand()

  9. 9

    在此示例中,0xFFFFFFFF在做什么?

  10. 10

    uint = 0时,for循环已崩溃

  11. 11

    C编程:为什么(0 || -1)== 1?

  12. 12

    在C ++中使用XOR 0xffffffff或〜翻转位?

  13. 13

    为什么退出代码0表示成功而1表示失败

  14. 14

    为什么“ UInt64(1 << 63)”崩溃?

  15. 15

    当我查看Uint8Array和Uint32Array的元素时,为什么它们具有不同的二进制表示形式?

  16. 16

    WslRegisterDistribution失败,错误为:0xffffffff

  17. 17

    unsigned long 大于 0xFFFFFFFF

  18. 18

    “ PUSH 0xFFFFFFFF”在函数序言中是什么意思?

  19. 19

    枚举的最后一个_BIG_ENUM = 0xFFFFFFFF是什么意思?

  20. 20

    为什么有时仅将memcmp(a,b,4)优化为uint32比较?

  21. 21

    0在Tensor(“ decode_jpeg:0”,shape =(?,?,1),dtype = uint8)中代表什么?

  22. 22

    为什么在C#中线程数大于1

  23. 23

    为什么在C#中线程数大于1

  24. 24

    如果我知道数据在哪里,例如0xffffffff7fffd9d8与0x10019c1e0,我能对数据有什么了解?

  25. 25

    为什么numeric_limits <uint16_t> :: max()不等于-1?

  26. 26

    为什么NaN ^ 0 == 1

  27. 27

    为什么〜0返回-1?

  28. 28

    为什么(1/90)= 0?

  29. 29

    尝试在C#中的UInt16上执行按位不(〜)时出错

热门标签

归档