程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的隱式數值轉換

C#的隱式數值轉換

編輯:關於C語言

隱式數值轉換包括以下幾種:

●從sbyte類型到short,int,long,float,double,或decimal類型。

●從byte類型到short,ushort,int,uint,long,ulong,float,double,或decimal類型。

●從short類型到int,long,float,double,或decimal類型。

●從ushort類型到int,uint,long,ulong,float,double,或decimal類型。

●從int類型到long,float,double,或decimal類型。

●從uint類型到long,ulong,float,double,或decimal類型。

●從long類型到float,double,或decimal類型。

●從ulong類型到float,double,或decimal類型。

●從char類型到ushort,int,uint,long,ulong,float,double,或decimal類型。

●從float類型到double類型。

其中,從int,uint,或long到float以及從long到double的轉換可能會導致精度下降,但決不會引起數量上的丟失。其它的隱式數值轉換則不會有任何信息丟失。

結合我們在數據類型中學習到的值類型的范圍,我們可以發現,隱式數值轉換實際上就是從低精度的數值類型到高精度的數值類型的轉換。

從上面的10條我們可以看出,不存在到char類型的隱式轉換,這意味著其它整型值不能自動轉換為char類型。這一點我們需要特別注意。

下面的程序給出了隱式數值轉換的例子。

程序清單6-1:

using System;
class Test
{
  public static void Main()
  {
    byte x=16;
    Console.WriteLine("x={0}",x);
    ushort y=x;
    Console.WriteLine("y={0}",y);
    y=65535;
    Console.WriteLine("y={0}",y);
    float z=y;
    Console.WriteLine("z={0}",z);
  }
}

程序的輸出將是:

x=16;

y=16;

y=65535;

z=65535;

如果我們在上面程序中的語句之後再加上一句:

y=y+1;

再重新編譯程序時,編譯器將會給出一條錯誤信息:

can not implictly convert type 'int' to type 'ushort'

這說明,從整數類型65536到無符號短整型y不存在隱式轉換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved