簡體   English   中英

C# 短/長/整數文字格式?

[英]C# short/long/int literal format?

在 C/C#/等中。 您可以告訴編譯器一個文字數字不是它看起來的樣子(即, float而不是doubleunsigned long而不是int ):

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

等等

有人可以指出這些清單嗎? 我專門尋找shortInt16的后綴。

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 Integer 文字

integer 文字的類型確定如下:

  • 如果文字沒有后綴,則它具有可以表示其值的第一種類型: intuintlongulong
  • 如果文字以Uu為后綴,則它具有可以表示其值的以下類型中的第一個: uintulong
  • 如果文字以Ll為后綴,則它具有可以表示其值的第一種類型: longulong
  • 如果文字以ULUluLulLULulUlu為后綴,則它是ulong類型。

§2.4.4.3 真正的文字

如果未指定實數類型后綴,則實數字面量的類型為 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的小數。

如果你的變量還不是很短,你必須明確地轉換它:

Object s = (Int16) 1;

沒有一個簡稱。 只需使用short s = 1; .

(short)myShortVar

它解決了我遇到的異常:

System.ArgumentException:“System.Int32”類型的 Object 無法轉換為“System.Int16”類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM