長整數 (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)" 這邊文章去觀看。
文章標籤
全站熱搜
留言列表