zoukankan      html  css  js  c++  java
  • C#Windows窗体界面设计_01_绘制三角函数_附强制类型转换

    binzhouweichao@163.com

    今天开始学习C#windows窗体界面设计。

    首先说一下类型转换。

    参考http://www.csharpwin.com/csharpspace/6848r2307.shtml

    以int和double为例。

    int类型的数据可以隐式转换成double类型,无须特别说明。

    double类型需要强制显式转换成int类型,需要加强制转换关键字。

    可以这样认为,隐式转换的标准是不能丢失数据;强制显式转换是因为在丢失数据的可能性下进行操作的。

    这里的int为int32,占4个字节的内存单元;double为双精度,占8个字节的内存单元。

    如:

    int a;
    double b;
    a = 2;
    b = a;//隐式转换,等效于b = (int)a;

    将int类型的a隐式转换成double类型,再赋值给b。

    反过来:

    int a;
    double b;
    b = 2.5;
    a = (int)b;//强制转换,不能省略

    将double类型的b强制显式转换成int类型,再赋值给a。

    经典题目:(int)((double)(5/2)+2.5)的值

    http://zhidao.baidu.com/link?url=8zScokNvEMnO_TUaHHhh1oqXB5bOERPiiuW3glWBiQAT8N65dEDTSJ3vmiH1aDqX5s1Qb5QoCKUV4a3p0MCySa

    顺序为先运算括号里面的,再运算括号外面的;同级括号优先级为从右到左。

    先看(double)(5/2),从右到左,5与2均为int型,故5/2的结果为int型,即为2;将2强制转换成double,还是2(这个是double的2,占8个字节,不是int的2);(double)2+2.5 = 4.5;(int)4.5 = 4。

    再看简单点的。

    2+2.5=?

    答案是4.5。2为int32,2.5为double。为避免丢失数据,结果以精度高的为准,也就是隐式转换的原则。

    那么,5 / 2=?
    答案是2。因为5是int32,2也是int32,结果类型与这两个数的类型一致。

    所以上面的题目中,把double去掉,结果还是一样的。而加了double,并不能将5/2的值变成2.5。因为在运算时,为5/2的结果开辟的内存为int32,小数部分数据已经放弃,即使再加double,也只能在尾部添加0。如果改成(double)5/2,结果就是2.5了。

    5 / 2.1=?

    答案肯定不是2。2.1为double类型,5为int32类型,结果以double为准,验证可得结果为2.38095......



  • 相关阅读:
    POJ 1144 Network(割点)
    POJ 3177 Redundant Paths & POJ 3352 Road Construction(双连通分量)
    ASCII码
    数组
    Java语法基础
    eclipse汉化过程
    指针
    面向对象
    第一课JAVA开发环境配置
    初学编写JAVA程序
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3367696.html
Copyright © 2011-2022 走看看