私はC#を初めとしており、値の仕組みを理解したいと考えています。通常の整数値を見ると、3つの重要な部分があります:型、名前、値。数値の後ろにC#の接尾辞があります
int testInt = 3;
| | |
Type Name Value
しかし、私は理由サフィックスF
のそれは私に少し混乱float値を参照してください。
float testFloat = 3.0F;
| | | |
Type Name Value Type
は、今では二つのタイプがあり、そしてF
サフィックスなし値は、二重になります。しかし、なぜこの出来事は、最初の単語が十分でなければなりませんように私はそれではないはず、
double testDouble = 3.0D;
double
で二重の変数を宣言することができるときでしょうか?同じサフィックスMと小数値のために行く:
decimal testDecimal = 3.0M;
そして、それは、他のサフィックスになると本当に私を混乱開始します。
ulong bigOne = 2985825802805280508UL;
私が前にテストでulong
を使用していることを知っていますu
は「符号なし」であり、値を通常の2倍にすることができます。その後、あなたは再びサフィックスとしてUを取得し、Lはリテラルのためにgoogleと言った。私が理解しているように、「リテラル」は数値を含む値型です。しかし、私が理解できないことは、なぜこのulongは接尾辞なしでも機能するのかということです。
ulong bigOne = 2985825802805280508;
は、それから私は、接尾辞
byte testLong = 12312UL;
値はバイト(254)には高すぎるので、これは動作しませんでしたことの重要性を理解することは別の何かをしようとしたサフィックスは、それを変換しません。長い変数。
なぜ宣言に最初の単語(型)が足りないのですか?最初の単語はそのタイプを伝えるのに十分なはずです。常に値に接尾辞を付けるのがベストプラクティスですか?
あなたが正しくても、割り当てがある場合は1つの型宣言で十分です。そのため、C#にvarキーワードが追加されました。https://msdn.microsoft.com/en-us/library/bb383973.aspx – Max
「U」は未割り当てで、未割り当てではありません。 –
また、4.0/3のような計算はどうですか?単精度または倍精度を使用する必要がありますか?それは本当に結果に影響します。 2000000000 * 3を考えていますか?それはオーバーフローですか、それとも長いですか?必ずしも直接値を指定するとは限りません。 – dryman