長整數 (long):long 為整數型別,可存放的範圍相當廣,共佔 64 位元 (bit),可放正數與負數,通常用在需要顯示較多的數目上,例如說 C# 計算時間常用到的 ticker,1 秒 = 10,000,000 ticker。
存放範圍為 -9223372036854775808 ~ 9223372036854775807。


使用使不必添加後置字元,因為系統預設整數型別可以為 int、unit、long、ulong:

 
long l = 33;
 

 

但也可以加上後置字元 l 或 L,但是這邊建議使用大寫的 L,畢竟小寫 l 很容易跟數字 1 搞混:

 
long l = 66L;
long l = 66l;
 

 

若是要將其他型別轉換為 long,或者 long 轉換為其他型別的話,都必須經過隱含轉換:

 
long l = 33;
int i = (int)l;

float f = 5.5f;
long l = (long)f;

// 就算結果為整數, 也需要經過隱含轉換
long l = (long)5.0; 
 

 

以下作法是錯誤的:

 
long l = 33;
int i = l;

// 雖然結果為整數, 但沒經過隱含轉換, 所以一樣錯誤
long l = 5.0;
 


但如果同樣為整數型別,且存放範圍比 long 小的,可以不經過隱含轉換,系統會自動轉換,例如:

 
int i = 22;
long l = i;
 


在使用多載方法時,可使用後置字元來做區分。例如:

 
private void Test( int i )
{
  // 程式碼...
}

private void Test( long l )
{
  // 程式碼...
}

// 這時候呼叫 Test 時, 會無法確定程式到底會呼叫哪一個 Test
Test( 33 );


// 所以可以加上 l 或者 L 後置字元來做型別的區分
Test( 33L );
Test( 33l );
 


當運算式裡出現 long 與其它整數的話,系統會自動轉型為 long:

 
long l = 33L + 66;
 


但是若為判斷式的話,系統則會轉換為 bool,以下做法是錯誤的:

 
// 這是錯的, 因為會轉換為 bool, 所以會報型態不一致的錯誤
long l = (33L == 66);
 


還有浮點數要轉換為整數的話,會有一些地方需要注意,因為這些地方會造成預期外的進位發生,詳細可到 "整數 (int)" 這邊文章去觀看。

 

 

arrow
arrow
    文章標籤
    C# long 長整數
    全站熱搜
    創作者介紹
    創作者 岳 的頭像

    岳 程式與鍵盤間的故事

    岳 發表在 痞客邦 留言(0) 人氣()