![](/img/trans.png)
[英]if byte + byte = int why int + int is not short/long? in C#
[英]C# short/long/int literal format?
在 C/C#/等中。 您可以告訴編譯器一個文字數字不是它看起來的樣子(即, 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 沒有文字說明符
integer 文字的類型確定如下:
- 如果文字沒有后綴,則它具有可以表示其值的第一種類型:
int
、uint
、long
、ulong
。- 如果文字以
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
的小數。
如果你的變量還不是很短,你必須明確地轉換它:
Object s = (Int16) 1;
沒有一個簡稱。 只需使用short s = 1;
.
(short)myShortVar
它解決了我遇到的異常:
System.ArgumentException:“System.Int32”類型的 Object 無法轉換為“System.Int16”類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.