web-dev-qa-db-ja.com

C#short / long / intリテラル形式?

C/C#/などでは、リテラル番号が表示されるものではないことをコンパイラーに伝えることができます(つまり、floatではなくdoubleintではなくunsigned long

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

等.

誰かが私にこれらのリストを教えてもらえますか?特にshortまたはInt16のサフィックスを探しています。

161
3Dave
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

それがすべてだと思います... short/ushort/byte/sbyteのリテラル指定子はありません

270
Thomas Levesque

§2.4.4.2整数リテラル から:

整数リテラルのタイプは、次のように決定されます。

  • リテラルに接尾辞がない場合、値を表すことができるこれらのタイプの最初のものがあります:intuintlongulong
  • リテラルの接尾辞がUまたはuである場合、その値を表すことができるこれらのタイプのうち最初のものがあります:uintulong
  • リテラルの接尾辞がLまたはlである場合、その値を表すことができるこれらのタイプのうち最初のものがあります:longulong
  • リテラルの接尾辞がULUluLulLULulU、またはluの場合、タイプはulongです。

そして §2.4.4.3実際のリテラル から:

実数型の接尾辞が指定されていない場合、実数リテラルの型はdoubleです。それ以外の場合、実数型の接尾辞は、次のように実数リテラルの型を決定します。

  • Fまたはfの接尾辞が付いた実際のリテラルは、タイプfloatです。たとえば、リテラル1f1.5f1e10f、および123.456Fはすべてfloat型です。
  • Dまたはdの接尾辞が付いた実際のリテラルは、タイプdoubleです。たとえば、リテラル1d1.5d1e10d、および123.456Dはすべてdouble型です。
  • Mまたはmの接尾辞が付いた実際のリテラルは、タイプdecimalです。たとえば、リテラル1m1.5m1e10m、および123.456Mはすべてdecimal型です。このリテラルは、正確な値を取得し、必要に応じて銀行家の丸めを使用して最も近い表現可能な値に丸めることにより、10進値に変換されます(セクション4.1.7)。値が丸められるか、値がゼロでない場合(後者の場合、符号とスケールは0になります)を除き、リテラルに表示されるスケールは保持されます。したがって、リテラル2.900mが解析され、符号0、係数2900、およびスケール3を含む10進数が形成されます。
40
BoltClock

変数がまだ短くない場合は、明示的にキャストする必要があります。

Object s = (Int16) 1;
8
Chris

短いものはありません。 short s = 1;を使用してください。

3
Random832