首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#C#基础

C#数据类型的转换

减小字体 增大字体 作者:本站  来源:本站原创  发布时间:2010-05-08 09:00:00

总体来看,C#数据类型的转换包括隐式转换和显示转换两种。隐式转换,即不同数据类型之间能自动完成的转换,无须人为干预,一般情况是由低精度的数据类型向高精度的数据类型转换。显示转换,即强制转换,必须人为地用一定方法完成的转换。我们先看看C#中的隐式转换。

1、隐式转换

我们用一个例子来说明一下:

using System;

class Class1
       {  
           static void Main(string[] args)
           {
                 sbyte b1 = 23;
                 short c = b1;
                  int i = c;
                  long l = i;
                 decimal d = l;
                 Console.WriteLine("b1={0},c={1},i={2},l={3},d={4}\n",b1,c,i,l,d);

          float f = 12.34453f;
                double db = f;   
                Console.WriteLine("f={0},db={1}\n",f,db);

         byte b2 = 234;
                ushort us = b2;
                uint ui = us;
                ulong ul = ui;
                float f1 = ul;
                Console.WriteLine("b2={0},us={1},ui={2},ul={3},f1={4}\n",b2,us,ui,ul,f1);

         char ch = 'a';
                ushort uh = ch;
               Console.WriteLine("ch={0},uh={1}\n",ch,uh);

        long ll = 12345678;
               float dd = ll;
               Console.WriteLine("ll={0},dd={1}",ll,dd);
             }
       }

其运行结果如下图所示:

C数据类型的转换 - KingLong - 翔宇亭—KingLongs Blog

从运行结果来看,sbyte能够向short,short能向int,int 能向long,long能向decimal自动转换;byte能向ushort,ushort能向uint,uint能向ulong,ulong能向float,float能向decimal进行自动转换。char能向ushort自动转换。根据这一点,我们可以画出C#数据类型的自动转换路线图,如下:

C数据类型的转换 - KingLong - 翔宇亭—KingLongs Blog

虽然,能够进行自动转换,但也存在着表示的数据不一致的情况,我们从上面的运行结果可以看出long型向float型转换时,以及float向double转换后,数据不太一致。

2、显示转换

显示转换的格式为:

          (数据类型)变量;

下面我们用一个例子来说明:

using System;

namespace Explicit
       {
              class Class1
              {
                    static void Main(string[] args)
                    {
                          int i = 2000;
                          short sh = (short)i;
                          Console.WriteLine("i={0},sh={1}",i,sh);

                    long ll = 200000;
                           short sr = (short)ll;
                           Console.WriteLine("ll={0},sr={1}",ll,sr);

                    int j = 65000;
                           short s= (short)j;
                           Console.WriteLine("j={0},s={1}",j,s);

                    double d = 9994657234.2345;
                           float f = (float)d;
                           Console.WriteLine("d={0},f={1}",d,f);

                    Console.WriteLine("注意下面的运算:");
                           short num1 = 20000,num2=23000;
                           short num3 = (short)(num1 + num2);
                           Console.WriteLine("num1={0},num2={1},num3=num1 + num2={2}",num1,num2,num3);
                       }
                 }
           }

运行结果如下图:

C数据类型的转换 - KingLong - 翔宇亭—KingLongs Blog

从运行结果可以看出,对于强制转换,往往容易造成数据的丢失和溢出,从对两个short型的变量num1和num2求和可以看出,即使同一数据类型的也可能造成数据结果的溢出,这一点要注意。另外,由于整型数据默认为int型的,对于num1+num2算完的结果也要进行强制转换为short型的。

数据类型的转换还有其他方法,我们将在以后进行介绍,敬请关注。
 

本文为自己原创,请勿转载。如需转载请注明出处:(http://www.biye5u.com


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.