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)的值
顺序为先运算括号里面的,再运算括号外面的;同级括号优先级为从右到左。
先看(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_绘制三角函数_附强制类型转换的更多相关文章
- C#Windows窗体界面设计_01_绘制三角函数_五点作图法
binzhouweichao@163.com Visual Stutio 2010 C#开发环境 五点作图绘制三角函数,以正弦函数为例,选取一个周期[0, 2π]上的五个特殊的点,也就是横坐标0, π ...
- C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
- 最佳实践扩展Windows窗体DataGridView控件 .net 4.5 附示例代码
Windows窗体DataGridView控件的性能调优.net 4.5 在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你可以避 ...
- 简单的Windows登陆界面设计
要求: 1.用户名必须为字母. //限定用户名必须为字母 private void txtName_KeyPress(object sender, KeyPressEventArgs e) { if ...
- JavaScript实现五子棋的界面设计
五子棋的界面设计包括绘制棋盘.绘制棋子及黑白棋轮流落子. 涉及的知识点主要有canvas绘制直线.设置画笔颜色:canvas画圆.填充渐变色 1.绘制棋盘 先设定棋盘的宽.高:然后利用for循环,根据 ...
- C#实例:5个.net经典例子(窗体与界面设计)
实例001 带历史信息的菜单 实例说明 在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用.如图1.1所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸.下 ...
- WPF界面设计技巧(1)—不规则窗体图文指南
原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而 ...
- C#学习笔记-Windows窗体基本功能(Login登录界面)
本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...
- 窗体背景的绘制(Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景)
核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景.通过TImage组件也可以实现,但是重写W ...
随机推荐
- 【转载】React初学者入门须知
http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know react.js入门学习 看了一遍,没什么特 ...
- 循环中不要放入openSession()
for(Shop s:list) { System.out.println(s.getName()); String sql="select shopId,sum(ele_bank+ele_ ...
- Sass结合Modernizr的使用方法
Modernizr在初始化的时候会首先找寻class=“no-js”的元素: <!DOCTYPE html> <html class="no-js"> &l ...
- asp.net清除页面缓存防止同时登录
//清除页面缓存,防止页面回退重复提交数据 在页面里做以下设置就可以使页面的缓存失效,每次都需要获取新页面. Response.Cache.SetCacheability(System.Web.Htt ...
- UVa 11076 (有重元素的排列) Add Again
n个可重复的元素的排列一共有 = All种,其中 假设这些数依次为ai,每种数字有mi个. 从右往左考虑第d位数(d≥0),第i个数字出现的次数为,那么这个数字对所求答案的贡献为 其实可以先一次求出个 ...
- UVa 11181 (条件概率) Probability|Given
题意: 有n个人买东西,第i个人买东西的概率为Pi.已知最终有r个人买了东西,求每个人买东西的概率. 分析: 设事件E为r个人买了东西,事件Ei为第i个人买了东西.所求为P(Ei|E) = P(EiE ...
- Deferred的那些知识
在移动开发中的各种中,我们一定会遇到异步回调的问题,比如: 1:Css3执行动画完毕, 回调 2:Jquery Animate动画的执行完毕, 回调 3:Ajax的执行(并行.串行),回调 等等 ...
- ffmpeg windows 雪花声解决方法
替换所有文件里的<math.h>为<mathimf.h>即可. 我用ffmpeg-0.6.3版测试时,好像mathimf.h文件和其他文件有冲突,需要修改源码. 和qdm2.c ...
- 调用DirectDraw接口和调DirectDraw7接口的不同点对比
调用DirectDraw接口步骤: 1. 包含链接库ddraw.lib 2. 初始化窗口类型(全屏独占时类型用popup). 3. 在初始化窗口后初始化Direct ...
- tomcat 调优
1 总是遇到read time out ,socket什么的 <Executor name="tomcatThreadPool" namePrefix=& ...