在c#中,可以将Char类型强制转换为Int32,从而产生负值
本文关键字:Int32 转换 类型 Char | 更新日期: 2023-09-27 18:11:45
还是总是保证对所有可能的字符都是正的?
保证非负
char
是一个unsigned 16位值。
来自c# 4规范第4.1.5节:
char
类型表示无符号16位整数,取值范围为0到65535。char
类型的可能值的集合对应于Unicode字符集。尽管char
与ushort
具有相同的表示,但并不是在一种类型上允许的所有操作在另一种类型上都允许。
由于char
的取值范围是U+0000到U+ffff,因此转换为Int32
将始终是正的
每个16位值的十六进制范围为0x0000 ~ 0xFFFF,为
Char Structure - MSDN
参见Microsoft文档
你可以看到,Char是一个16位的值,范围是U+0000到U+ffff。如果将其强制转换为Int32类型,则不应该有负值。
char
可以隐式转换为ushort
, ushort
的取值范围是0 to 65,535
,所以它总是正的