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......

C#Windows窗体界面设计_01_绘制三角函数_附强制类型转换的更多相关文章

  1. C#Windows窗体界面设计_01_绘制三角函数_五点作图法

    binzhouweichao@163.com Visual Stutio 2010 C#开发环境 五点作图绘制三角函数,以正弦函数为例,选取一个周期[0, 2π]上的五个特殊的点,也就是横坐标0, π ...

  2. C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮

  3. 最佳实践扩展Windows窗体DataGridView控件 .net 4.5 附示例代码

    Windows窗体DataGridView控件的性能调优.net 4.5   在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你可以避 ...

  4. 简单的Windows登陆界面设计

    要求: 1.用户名必须为字母. //限定用户名必须为字母 private void txtName_KeyPress(object sender, KeyPressEventArgs e) { if ...

  5. JavaScript实现五子棋的界面设计

    五子棋的界面设计包括绘制棋盘.绘制棋子及黑白棋轮流落子. 涉及的知识点主要有canvas绘制直线.设置画笔颜色:canvas画圆.填充渐变色 1.绘制棋盘 先设定棋盘的宽.高:然后利用for循环,根据 ...

  6. C#实例:5个.net经典例子(窗体与界面设计)

    实例001  带历史信息的菜单 实例说明 在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用.如图1.1所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸.下 ...

  7. WPF界面设计技巧(1)—不规则窗体图文指南

    原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而 ...

  8. C#学习笔记-Windows窗体基本功能(Login登录界面)

    本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...

  9. 窗体背景的绘制(Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景)

    核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景.通过TImage组件也可以实现,但是重写W ...

随机推荐

  1. 获取Android 手机屏幕宽度和高度以及获取Android手机序列号

    1.获取Android 手机屏幕宽度 1 DisplayMetrics dm = new DisplayMetrics(); 2 this.getWindowManager().getDefaultD ...

  2. Spring MVC定义拦截器

    拦截器: package sy.Interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http ...

  3. HDU 3746 (KMP求最小循环节) Cyclic Nacklace

    题意: 给出一个字符串,要求在后面添加最少的字符是的新串是循环的,且至少有两个循环节.输出最少需要添加字符的个数. 分析: 假设所给字符串为p[0...l-1],其长度为l 有这样一个结论: 这个串的 ...

  4. 无法连接到SQL Server 2008 R2

    服务器环境: 操作系统    名称:    Microsoft Windows Server 2008 R2 Enterprise     版本:    6.1.7601    服务包:    Ser ...

  5. 通过CSS禁止Chrome自动为输入框添加橘黄色边框,修改/禁止 chrome input边框颜色,

    1   /*Chrome浏览器 点击input 黄色边框 禁用*/ .NoOutLine:focus{outline: none} <asp:TextBox ID="txtTeleph ...

  6. codevs 3123 高精度练习之超大整数乘法

    fft. #include<iostream> #include<cstdio> #include<cstring> #include<complex> ...

  7. HDU 5311 Hidden String (暴力)

    题意:今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为n的字符串s. 他想要知道能否找到s的三个互不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]满足下 ...

  8. 【转】IOS NSTimer 定时器用法总结

    原文网址:http://my.oschina.net/u/2340880/blog/398598 NSTimer在IOS开发中会经常用到,尤其是小型游戏,然而对于初学者时常会注意不到其中的内存释放问题 ...

  9. Oracle 跟踪事件 set event

    一.Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息 ...

  10. 【转】android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程.   流程概述: 1.打包资源文件,生成 ...