首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 隱含數值轉換完整表:從低精度到高精度的安全轉換規則

     編輯:關於C語言

隱含數值轉換 是編譯器自動執行、無需語法標示、且保證不丟失數值大小的轉換。核心原則:從較小範圍/精度的型別轉向較大範圍/精度的型別。

完整隱含轉換對照表

來源型別目標型別
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
ulongfloat, double, decimal
charushort, int, uint, long, ulong, float, double, decimal
floatdouble

精度損失提醒

雖不丟失數量級,但下列轉換可能降低精度:

  • int / uint / long → float
  • long → double

其餘轉換完全無資訊損失。

特殊限制:不存在到 char 的隱含轉換

無任何整數型別可隱含轉為 char,必須顯式轉型:char c = (char)65;。這防止數值被誤視為字元。

程式碼範例

using System;
class Test {
    static void Main() {
        byte x = 16;
        ushort y = x;      // 隱含 byte → ushort
        y = 65535;
        float z = y;       // 隱含 ushort → float
        Console.WriteLine($"x={x}, y={y}, z={z}");
        // y = y + 1;      // 編譯錯誤:int 無法隱含轉 ushort
    }
}

輸出:x=16, y=65535, z=65535。若執行 y = y + 1,編譯器報錯 CS0266,因 ushort + int → int,無隱含轉回 ushort。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved