在c#中,可以将Char类型强制转换为Int32,从而产生负值

本文关键字:Int32 转换 类型 Char | 更新日期: 2023-09-27 18:11:45

还是总是保证对所有可能的字符都是正的?

在c#中,可以将Char类型强制转换为Int32,从而产生负值

保证非负

char是一个unsigned 16位值。

来自c# 4规范第4.1.5节:

char类型表示无符号16位整数,取值范围为0到65535。char类型的可能值的集合对应于Unicode字符集。尽管charushort具有相同的表示,但并不是在一种类型上允许的所有操作在另一种类型上都允许。

由于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,所以它总是正的