質問

c / c# / etcでは、文字通りの数字はそれが見えるものではないことをコンパイラに伝えることができます(つまり、つまり、 float それ以外の double, unsigned long それ以外の int:

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

誰かがこれらのリストを私に指し示すことができますか?私は特にサフィックスを探しています short また Int16.

役に立ちましたか?

解決

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の文字通りの仕様はありません

他のヒント

から §2.4.4.2整数リテラル:

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

  • リテラルに接尾辞がない場合、その値を表すことができるこれらのタイプの最初のものがあります。 int, uint, long, ulong.
  • 文字通りが付着している場合 U また u, 、それはこれらのタイプの最初のものを持っています。そこでは、その値を表すことができます。 uint, ulong.
  • 文字通りが付着している場合 L また l, 、それはこれらのタイプの最初のものを持っています。そこでは、その値を表すことができます。 long, ulong.
  • 文字通りが付着している場合 UL, Ul, uL, ul, LU, Lu, lU, 、 また lu, 、それはタイプです ulong.

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

実際のタイプの接尾辞が指定されていない場合、実際のリテラルのタイプは2倍です。それ以外の場合、実際のタイプの接尾辞は、次のように、実際のリテラルのタイプを決定します。

  • 本物の文字通りの接尾辞 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.

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

Object s = (Int16) 1;

略してそれはありません。使用するだけです short s = 1;.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top