C#学习日记03---数据类型

来源:互联网 发布:python爬虫框架scrapy 编辑:程序博客网 时间:2024/05/21 08:59

C#数据类型

    C#语言是一种强类型的语言,在程序中用到的变量、表达式、数值等都必须要有类型。对于程序中每一个用于保存信息的量,使用时我们都必须声明他的数据类型,以便编译器为他分配内存空间。C#的数据类型可以分为两大部分:值类型和引用类型(常用的2个  String 和 Object)。

     由于C#强类型的特点,因此在C#中一种数据类型也就是一个类。比如 整型 int他的真名为System.Int32();

     基本数据类型 (别名)FCL数据类型(真名)说明objesct System.Objest所有其它类型的基类型stringSystem.StringUnicode字符序列decimalSystem.Decimal有28位小数的高度精度浮点数boolSystem.Booleantrue或falsechar  System.Char16位Unicode字符byte System.Byte 8位无符号整型shortSystem.Int16 16位有符号整型int System.Int3232位有符号整型long System.Int64 64位有符号整型ushort System.Uint1616位无符号整型uintSystem.Uint3232位无符号整型ulong System.Uint64 64位无符号整型single(float)System.Single单精度浮点类型doubleSystem.Double 双精度浮点类型sbyte System.Sbyte8位有符号整型

        由上表我们看的出,基本类型直接映射到基类库中的类型,因此两者之间可以互换,也就是说我们定义一个int型的变量,

                                 int x = 12;    (发现与C/C++定义数据类型类似)

  可以写成这样:  System.Int32 x = new System.Int32(12);

    不同的类型定义的范围也有所不同:
名称范围sbyte-2^7~2^7-1short-32768~32767int-2^31~2^31-1long -2^63~2^63-1byte0~2^8-1
ushort0~2^16-1uint0~2^32-1ulong0~2^64-1  char表示一个16位的字符









 float数据类型用于较小的浮点数,因为它要求的精度较低。

    double数据类型比float数据类型大,提供的精度也大一倍(15位)。在C#编译器一般默认小数类型为double类型,

 如果想指定该值为float,可以在其后加上字符F(或f),如:

         float f = 12.3F;

   

decimal类型专门用于进行财务计算,高精度(28位)。

    要把数字指定为decimal类型,可以在数字的后面加上字符M或(m),如:

    decimal d=12.30M;




C#变量名命名规则:

   

1)、由字母、数字或下划线"_"组成

         2)、必须由“字母”下划线"_"开头,不能以数字开头

         3)、不能是c#中的关键字 如:int、string、bool、Main、class等 

         4)、区分大小写  如:小写的a  和  大写的A 是两个变量


  下面就写个例子吧,要求由用户输入 姓名  年龄  身高  工资 性别然后输出“我的名字是:XX,性别是:XX,今年XX岁,身高是:XX,工资是:XX”

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Example{    class Program    {        static void Main(string[] args)        {            String name;  //定义姓名为name            char sex;   //定义性别             uint age;   //年龄(年龄不能为负数)            double hight;  //身高            decimal salary;//工资                Console.WriteLine("你叫什么名字啊?");               name = Console.ReadLine();   //输入姓名             Console.WriteLine("你的性别是:");            sex = Console.ReadKey().KeyChar;  //写入性别            Console.WriteLine();   //换行            Console.WriteLine("你多大了?");            age =uint.Parse(Console.ReadLine());  //写入年龄(uint.Parse()是将读入的String类型转为uint类型,ReadLine()                                                    //的返回值是String 类型)            Console.WriteLine("多高啊?");            hight = double.Parse(Console.ReadLine());  //写入身高            Console.WriteLine("工资多少呀?");            salary = decimal.Parse(Console.ReadLine());  //写入工资            Console.WriteLine("我叫{0},是个{1}孩子,今年{2}岁了,我的身高是{3}米,工资有{4}元",name,sex,age,hight,salary);       //输出信息        }    }}


 得到的结果是:


  唉! 又是这种黑面框,黑咕隆咚的丑死,以后学了Winform应该会好点吧 !

 基于02日记中的输入与输出,通过查阅又get了一项新的输出技能,在上面的最后一行代码中有 {0},{1},{2}。。。可以有很多个,这一对“{}”叫占位符,,,(以下是我个人理解)就是我们在程序输出的时候挖 的一个又一个坑,然后再用第一个参数(“”中的内容是一个String类型的参数,参数与参数之间用逗号“,”隔开)后面的参数按顺序去填好  (有点俗阿)。   

   本着学无止境的探索精神,我又对他进行了一番探索;    当我们用占位符 的时候一定要按照{0},{1},{2}......这个顺序来吗?我试着改一下还是以上的代码,,后面的顺序改为这样  {0},{3},{1},{2},{10}。编译没有抱错但是运行输出的时候打印不出来,可能就是那个10的问题,原来不能跳着挖坑的,那就这样   {0},{3},{1},{2},{4},这次没跳了,交换了顺序,编译没错能运行,但是结果是这样:


完全丧失常理 了 结果乱了。仔细观察后发现其实那个0,1,2,3,4是 给后面参数编的序号,{}里面是谁的序号就调用谁。

   本着每日三省吾身的好学精神我又有疑惑了,在02日记中我输出aaa与bbb的时候我用了双引号 “” 表示字符串,但是如果我想输出双引号该咋办呢?想了好久,去网上查了下才知道 可以用\加符号就可以输出啦,于是我写了个不要脸的程序:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Example{    class Program    {        static void Main(string[] args)        {                       Console.WriteLine("女神对我说:\"I Love You!!!\"");        }    }}

结果是:


(哈哈,,没羞没臊的)总之 双引号是成功输出来了

     本着做一个勇于探索的人,我又发现:输出双引号的时候我用  \  来不让他转义 ,那要是我想输出 \ 该咋办呢?

可能是在 \ 前面再加个 \ 试了下没错 \\能够 输出 \ 所以要输出\\就得 写\\\  以此类推  感觉挺麻烦的,于是又找了个一劳永逸

的方法  “@"  ,,,Console.WriteLine(@"\\\");

结果输出     \\\   不变















0 0
原创粉丝点击