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 ...
随机推荐
- linux/unix网络编程之epoll
转载自 Linux epoll模型 ,这篇文章讲的非常详细! 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显 ...
- iOS开发:iOS的整体架构以及API介绍
iOS的整体架构分为4层——Cocoa Touch层.Media层.Core Services层和Core OS层,下面概要介绍一下这4层. Cocoa Touch:构建iOS应用的一些基本系统服务, ...
- ios9下ionic框架报[$rootScope:infdig] 10 $digest() iterations reached. Aborting!的解决办法
升级ios9后,ionic开发的app会报[$rootScope:infdig] 10 $digest() iterations reached. Aborting!的错误,加上一个patch就可以解 ...
- android view的setVisibility方法值的意思
android view的setVisibility方法值的意思 有三个值 visibility One of VISIBLE, INVISIBLE, or GONE. 常量值为0,意思是可见的 常 ...
- 利用Modbus协议读取电能表的数据
1.电脑要有485转232的转换器2.你要看懂DLT_645—1997规约的通讯协议,现在大多电能表厂都会遵行这个通讯协议,DLT_645—1997规约不是最新的通讯协议.就看电表的使用什么通讯协议. ...
- 嵌入式 hi3518c下ramdisk文件系统与文件系统烧写以及uboot中change-the-env
NULL RAM : mkdir ramdisk_test 临时挂在点 dd if=/dev/zero of=123 bs=1k count=10000 建立空硬盘 losetup /dev/loo ...
- u-boot 源码修改 bootcmd,IP ,BOOTARGS等参数
uboot1.1.6\include\configs\smdk6410.h #define CONFIG_BOOTCOMMAND"nand read 0xc0008000 0x200000 ...
- asp.net MVC 应用程序的生命周期(上)
首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的 ...
- HDU 5881 Tea
Tea Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ArcGIS AO开发高亮显示某些要素
参考代码1 ifeaturecursor pcur = ifeatureclass.search(iqueryfilter pfilter); pfilter.whereclause = strAdd ...