在C / C#/等中,您可以告诉编译器文字编号不是它看起来的那个(即,float
而不是double
,unsigned long
而不是int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
等
有人能指出我的清单吗?我专门为short
或Int16
寻找后缀。
答案 0 :(得分:263)
var d = 1.0d; // double
var d0 = 1.0; // double
var d1 = 1e+3; // double
var d2 = 1e-3; // double
var f = 1.0f; // float
var m = 1.0m; // decimal
var i = 1; // int
var ui = 1U; // uint
var ul = 1UL; // ulong
var l = 1L; // long
我认为这就是...短/ ushort / byte / sbyte没有文字说明符
答案 1 :(得分:38)
整数文字的类型确定如下:
- 如果文字没有后缀,则其中第一个类型可以表示其值:
int
,uint
,long
,ulong
。< / LI>- 如果文字后缀为
U
或u
,则其中的第一种类型可以表示其值:uint
,ulong
。- 如果文字后缀为
L
或l
,则其中的第一种类型可以表示其值:long
,ulong
。- 如果文字的后缀为
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
或lu
,类型为ulong
。
如果未指定实际类型后缀,则实数的类型为double。否则,实际类型后缀确定实际文字的类型,如下所示:
- 以
F
或f
为后缀的真实文字属于float
类型。例如,文字1f
,1.5f
,1e10f
和123.456F
都属于float
类型。- 以
D
或d
为后缀的真实文字属于double
类型。例如,文字1d
,1.5d
,1e10d
和123.456D
都属于double
类型。- 以
M
或m
为后缀的真实文字属于decimal
类型。例如,文字1m
,1.5m
,1e10m
和123.456M
都是decimal
类型。通过获取精确值将此文字转换为十进制值,并在必要时使用银行家的舍入舍入到最接近的可表示值(第4.1.7节)。除非值被舍入或值为零(在后一种情况下,符号和比例将为0),否则将保留文字中明显的任何比例。因此,文字2.900m
将被解析以形成带符号0
,系数2900
和比例3
的小数。
答案 2 :(得分:8)
如果你的变量不是短的,你必须明确地转换它:
Object s = (Int16) 1;
答案 3 :(得分:3)
没有一个简称。只需使用short s = 1;
。
答案 4 :(得分:0)
(short)myShortVar
它解决了我遇到的异常:
System.ArgumentException:“ System.Int32”类型的对象不能为 转换为类型'System.Int16'。