C# 快速導覽 - 型態轉換

C# 中的數字型態 (type) 有好幾種,會依實際的計算過程自動進行型態間的轉換,轉換模式如下表

原本型態會被轉換成的型態
sbyteshort、int、long、float、double 或 decimal
byteshort、ushort、int、uint、long、ulong、float、double 或 decimal
shortint、long、float、double 或 decimal
ushortint、uint、long、ulong、float、double 或 decimal
intlong、float、double 或 decimal
uintlong、ulong、float、double 或 decimal
longfloat、double 或 decimal
charushort、int、 uint、 long、ulong、 float、 double 或 decimal
floatdouble
ulongfloat、 double 或 decimal


舉例如下
class Demo {
    static void Main() {
        byte a = 255;
        System.Console.WriteLine(a + 1);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:conversion1.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2013 年 6 月 */


由於 byte 的最大值為 255 ,加 1 後會自動轉換成 short ,這樣保證所有資訊不會計算過程中遺失。


編譯執行,結果如下



以上是隱性的自動轉換,我們也能夠強制進行型態轉換,此時在運算式 (expression) 前加上小括弧與型態名稱即可,例如
class Demo {
    static void Main() {
        int a = 1;
        byte b = (byte) (a + 1);
        System.Console.WriteLine(b);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:conversion2.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2013 年 6 月 */


編譯執行,結果如下



中英文術語對照
型態type
運算式expression


您可以繼續參考
運算式
型態轉換


相關目錄
回 C# 快速導覽
回 C# 教材
回首頁


參考資料
Standard ECMA-334 C# Language Specification
msdn: 轉型和型別轉換 (C# 程式設計手冊)
msdn: 隱含數值轉換表 (C# 參考)

沒有留言: