C#short / long / int文字格式?

时间:2011-04-28 15:03:32

标签: c# literals language-specifications

在C / C#/等中,您可以告诉编译器文字编号不是它看起来的那个(即,float而不是doubleunsigned long而不是int

var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long

有人能指出我的清单吗?我专门为shortInt16寻找后缀。

5 个答案:

答案 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)

来自§2.4.4.2 Integer literals

  

整数文字的类型确定如下:

     
      
  • 如果文字没有后缀,则其中第一个类型可以表示其值:intuintlongulong。< / LI>   
  • 如果文字后缀为Uu,则其中的第一种类型可以表示其值:uintulong
  •   
  • 如果文字后缀为Ll,则其中的第一种类型可以表示其值:longulong
  •   
  • 如果文字的后缀为ULUluLulLULulUlu,类型为ulong
  •   

来自§2.4.4.3 Real literals

  

如果未指定实际类型后缀,则实数的类型为double。否则,实际类型后缀确定实际文字的类型,如下所示:

     
      
  • Ff为后缀的真实文字属于float类型。例如,文字1f1.5f1e10f123.456F都属于float类型。
  •   
  • Dd为后缀的真实文字属于double类型。例如,文字1d1.5d1e10d123.456D都属于double类型。
  •   
  • Mm为后缀的真实文字属于decimal类型。例如,文字1m1.5m1e10m123.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'。