C# 数值类型
整数文本
整数文本可以是
- 十进制:不使用任何前缀
- 十六进制:使用
0x
或0X
前缀 - 二进制:使用
0b
或0B
前缀(在 C# 7.0 和更高版本中可用)
下面的代码演示每种类型的示例:
var decimalLiteral = 42; var hexLiteral = 0x2A; var binaryLiteral = 0b_0010_1010;int a = 0b_1101;//输出13
前面的示例还演示了如何将 _
用作数字分隔符(从 C# 7.0 开始提供支持)。 可以将数字分隔符用于所有类型的数字文本。
整数文本的类型由其后缀确定,如下所示:
-
如果文本没有后缀,则其类型为以下类型中可表示其值的第一个类型:
int
、uint
、long
、ulong
。备注
文本解释为正值。 例如,文本
0xFF_FF_FF_FF
表示uint
类型的数字4294967295
,但其位表现形式与int
类型的数字-1
相同。 如果需要特定类型的值,请将文本强制转换为该类型。 如果文本值无法以目标类型表示,请使用运算符unchecked
。 示例:unchecked((int)0xFF_FF_FF_FF)
生成-1
。 -
如果文本以
U
或u
为后缀,则其类型为以下类型中可表示其值的第一个类型:uint
、ulong
。 -
如果文本以
L
或l
为后缀,则其类型为以下类型中可表示其值的第一个类型:long
、ulong
。备注
可以使用小写字母
l
作为后缀。 但是,这会生成一个编译器警告,因为字母l
可能与数字1
混淆。 为清楚起见,请使用L
。 -
如果文本的后缀为
UL
、Ul
、uL
、ul
、LU
、Lu
、lU
或lu
,则其类型为ulong
。
如果由整数字面量所表示的值超出了 UInt64.MaxValue,则将出现编译器错误 CS1021。
如果确定的整数文本的类型为 int
,且文本所表示的值位于目标类型的范围内,则该值可以隐式转换为 sbyte
、byte
、short
、ushort
、uint
、ulong
、nint
或 nuint
:
byte a = 17; byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte'
如前面的示例所示,如果文本的值不在目标类型的范围内,则会发生编译器错误 CS0031 。
还可以使用强制转换将整数文本所表示的值转换为除确定的文本类型之外的类型:
var signedByte = (sbyte)42; var longVariable = (long)42;
int a = 1, b = 2;
long n = 123L;//避免混淆加L
double c = 3.0d;//可以加或不加d
float d = 0.3f;
float f = 134.45E-2f;
// output: 1.3445
decimal m = 1.5E6m; // output: 1500000 E基地为10 m或大M都可以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY