• 类型自动转换规则


    参与运算(算术运算和赋值运算)的操作数结果类型必须一致,当不一致时满足下面条件,系统自动完成类型转换.


    1,两种类型兼容,例如:int和double兼容. (都同为数字)

    double number=3;   //前面我们定义的类型为double,但是注意我们赋值却是一个int值:3,系统自动转换成double类型3.0,所以程序在这里不会报错.

    Console.WriteLine("{0}",number);

    Console.ReadKey();


    2,目标类型大于源类型,例如:double>int.(double范围远远大于int类型)

    double pi=3.14;

    double r=5; //两种类型兼容系统自动完成类型转换成double类型5.0

    double area=r*r*pi;// r*r结果为int*pi(double),由于取值范围double大于int,在转换后不会丢失精度,所以在此处值为double类型[先将r*r值结果直接加.0转为double*pi(double),将最终为double的结果值赋给了double area]

    Console.WriteLine("面积={0}",area);

    Console.ReadKey();


    3,对于表达式,如果一个操作数为double类型,则整个表达式可提升为double类型

    int number1=10,number2=3;

    int ys=number1%number2;

    double quo=1.0*number1/number2;//注意此处如果不加1.0*输出结果是3.因为2个int类型的数相除结果还是int只是得出int类型的结果后系统加.0转为double.如果前加1.0*就是变成一个double类型的/一个int类型的结果就是double类型的 所以输出结果是3.333333333 如果一个操作数为double类型,则整个表达式可提升为double类

    Console.WriteLine("取余数={0} {1}",ys,quo);

    Console.ReadKey();


    同理:

    如下

    1,decimal number=3.14; //这里是无法将double类型的数值自动转换成deicmal类型的值,因为double的取值范围比decimal大。只能取值范围小的赋给大的

    正确写法应该是

    decimal number=3.14m;


    2,

    decimal number=3.14m;

    double number2=number;//这里也是无不将decimal值赋值给double的,虽说double取值范围比decimal大,但是double取值精度没有decimal的高。转换后会丢失精度所以不能转换。这里程序也会自动报错.


    3,

    decimal number=3 //此处是可以将int类型的转化成decimal类型的

  • 相关阅读:
    Leetcode463. Island Perimeter
    C++ 编写的解码器小程序 map
    LeetCode706. Design HashMap
    LeetCode705. Design HashSet
    LeetCode804. Unique Morse Code Words
    c++后台开发 准备材料
    Scott Young-《如何高效学习》
    跳表和散列
    时间复杂度 log n
    第35题:LeetCode138. Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/swlq/p/5353295.html
Copyright © 2020-2023  润新知