zoukankan      html  css  js  c++  java
  • 类型自动转换规则

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


    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类型的

  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/swlq/p/5353295.html
Copyright © 2011-2022 走看看