美文网首页C#语言入门
游戏之路语言篇之数据类型转化--002

游戏之路语言篇之数据类型转化--002

作者: HeavenOrSky | 来源:发表于2019-03-27 20:59 被阅读0次

    老酷:小伙儿,消化的怎么样了?
    小奇:那点东西能难倒我么?
    老酷:真的么?我看你在刻苦研究,一张苦瓜脸。
    小奇:昨天的内容我已经研究完了,现在在看数据类型转化和控制台的输入输出。我感觉不会难,只不过是刚看,一头雾水。
    老酷:我只要给你简单说一遍,你便可以摆脱这张苦瓜脸,你信不?
    小奇:真的么?只要你能做到。我请你吃饭。
    老酷:让个位置。为了你的这顿饭我给你秀一波。(几分钟后),看代码

            static void Main(string[] args)
            {
                Console.WriteLine("sbyte\t\t\tmin:{0}\t\t\tmax:{1}", sbyte.MinValue, sbyte.MaxValue);
                Console.WriteLine("byte\t\t\tmin:{0}\t\t\t\tmax:{1}", byte.MinValue,byte.MaxValue);
                Console.WriteLine("short\t\t\tmin:{0}\t\t\tmax:{1}", short.MinValue, short.MaxValue);
                Console.WriteLine("ushort\t\t\tmin:{0}\t\t\t\tmax:{1}", ushort.MinValue, ushort.MaxValue);
                Console.WriteLine("int\t\t\tmin:{0}\t\t\tmax:{1}", int.MinValue, int.MaxValue);
                Console.WriteLine("uint\t\t\tmin:{0}\t\t\t\tmax:{1}", uint.MinValue, uint.MaxValue);
                Console.WriteLine("long\t\t\tmin:{0}\tmax:{1}", long.MinValue, long.MaxValue);
                Console.WriteLine("ulong\t\t\tmin:{0}\t\t\t\tmax:{1}", ulong.MinValue, ulong.MaxValue);
            }
    

    运行结果:


    运行结果

    小奇:这是每个数据类型的取值范围么?
    老酷:是的。数据类型之间的转化就像不同大小的容器倒水是一样的。如果将大桶中的水导入到小杯里面。则只能倒满一杯,剩下的水就浪费了。同样的道理long类型的数据强制转化成byte类型则可能会有数据丢失。这种可能发生丢失数据的转化方式我们称之为强制类型转化。杯中水导入桶中不会有溢出行为就像将byte类型转化成long类型不可能发生数据丢失一样。我们这种没有数据丢失的数据类型转化我们称之为隐式转化。
    小奇:我明白了。你看看是不是这样的。

            static void Main(string[] args)
            {
                int num1 = 10;
                //强制类型转化 不发生数据丢失
                byte num2 = (byte)num1;
                Console.WriteLine(num2);
    
                int num3 = 20000;
                // 强制类型转化
                byte num4 = (byte)num3;
                Console.WriteLine(num4);
            }
    

    运行结果:


    运行结果

    num3在强制类型转化后成了32 数据发生了丢失。
    老酷:是的就是这个道理
    小奇:隐式类型转化,不用担心数据丢失。

           static void Main(string[] args)
           {
               byte num1 = 126;
               //隐式类型转化
               int num2 = num1;
               Console.WriteLine(num2);
    
           }
    

    老酷:你开始上道了,天生的程序员。
    小奇:老酷,你开始写的代码,字符串里面有\t ,它是什么意思?
    老酷:小伙儿,你看的挺细呀!!它就是一个制表符,表示一个TAB键,一个缩进,占四个空格。
    小奇:恩。对于控制台的输出我想将字符串和数字形成一句话输出,怎么办?就像你在将数据类型的时候,我想输出"程咬金,等级:13,血量:3000,性别:男,参战状态:false".
    老酷:有两种方式,第一种是使用连字符的方式。第二种是使用占位符的方式。下面我给你说一下第一种方式:

            static void Main(string[] args)
            {
                //用户名
                string username = "程咬金";
                //等级
                int level = 13;
                //血量
                int hp = 3000;
                //性别
                char gender = '男';
                //参战状态
                bool isFighting = false;
    
                Console.WriteLine(username+",等级:"+level+",hp:"+hp+",性别:"+ gender+",参战状态:"+isFighting);
            }
    

    运行结果:


    连字符运行结果

    小奇:‘+’ 这不是加号么?
    老酷:是的也不是。‘+’用在字符串和其他类型之间的时候就是连字符,用在整型、浮点型还有字符型之间的时候就是加号。连字符就是将字符串类型和其他类型拼接起来。
    小奇:好吧,信号你给我说了这点。我感觉这是一个坑。
    老酷:对于第二种方式的话,我们成为占位符。类似于大学生考前在图书馆占座是一个道理。接下来我们看看这个效果

            static void Main(string[] args)
            {
                //用户名
                string username = "程咬金";
                //等级
                int level = 13;
                //血量
                int hp = 3000;
                //性别
                char gender = '男';
                //参战状态
                bool isFighting = false;
                Console.WriteLine("{0},等级:{1},血量:{2},性别:{3},参战状态:{4}",username,level,hp,gender,isFighting);
            }
    
    占位符运行效果

    看一下效果,是不是一样的呢?
    小奇: 是的,是不是{0}就是第一个占位符,以后每次增加一个后面的变量一个一个的去对应前面的占位符。
    老酷:看来你理解很透彻。你在大学是不是经常占座?
    小奇:我可是学霸,从不复习!
    老酷:呦呵,看不错来呀!!但是这里要注意,占位符中的索引(就是大括号中的数字)必须从0开始,以后一次增加不能跳过任何一个数字。
    小奇:懂了!我还有个问题,就是Console.Write()和Console.WriteLine()的区别就是有没有换行么?
    老酷:是的。Console.Write()写到控制台上后没有换行,而Console.WriteLine()是要换行的。
    比如:

            static void Main(string[] args)
            {
                Console.Write("12345");
                Console.Write("abcde");
            }
    
    Console.Write的用法
            static void Main(string[] args)
            {
                Console.WriteLine("12345");
                Console.WriteLine("abcde");
            }
    
    Console.WriteLine()用法

    看到效果了吧?
    小奇:懂了!我昨天在 练习这部分。但是我想把我输入的东西显示在控制台上怎么办?
    老酷:这就需要控制台的输入了呀?需要使用Console.ReadLine();

            static void Main(string[] args)
            {
                Console.WriteLine("请输入旅游城市:");
                string place = Console.ReadLine();
                Console.WriteLine("欢迎来到{0}",place);
            }
    
    Console.ReadLine()的用法

    小奇:我貌似发现规律了。Console.WriteLine()就是将数据写到控制台上,Console.ReadLine()就是从键盘上读取数据
    老酷:总结很到位。但是不够完整。Console.WriteLine()就是将数据从内存中写到控制台上,Console.ReadLine()就是从键盘上读取数据到内存中。
    小奇:恩。今天可以和计算机交互了。开心
    老酷:别开心了,带我吃饭去吧!
    小奇:你来真的呀!!!!!

    相关文章

      网友评论

        本文标题:游戏之路语言篇之数据类型转化--002

        本文链接:https://www.haomeiwen.com/subject/nymzvqtx.html