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 ...
随机推荐
- bzoj3994
智商太低了 详细题解在这里http://blog.csdn.net/zmoiynlp/article/details/45176129 ; ..max] of longint; g:..max] of ...
- 利用序列化的方式实现C#深复制和浅复制
代码如下:具体看注释 [Serializable] public class A { public virtual string Name { get; set; } public int Age { ...
- 【.NET应用技巧】Asp.NET MVC 4 设置IIS下调试
[环境] VS 2012 IIS7.5 [问题] MVC项目在创建时和APS.NET不同,不能够选择服务器类型,不能够直接把项目创建到IIS上. 如果在项目中直接更改属性,更换调试服务器类型,会报错 ...
- DbgPrint输出格式 Unicodestring
DbgPrint输出格式 Unicodestring 1) 直接打印字符串. DbgPrint("Hello World!"); 2) 空结尾的字符串,你可以用普通得C语法表示字 ...
- eclipse export Android jar with jni
/*********************************************************************** * eclipse export Android ja ...
- HTMLParser 解析HTML
from html.parser import HTMLParser from html.entities import name2codepoint class MyHTMLParser(HTMLP ...
- Windows下FFmpeg快速入门
本系列文章导航 Windows下FFmpeg快速入门 ffmpeg参数解释 mencoder和ffmpeg参数详解(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视 ...
- 【转】【玩转cocos2d-x之二十三】多线程和同步03-图片异步加载
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/15334159 cocos2d-x中和Android,Windows都 一样, ...
- Android常用组件
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Arc Engine 中添加气泡提示框
一.在ArcMap中的定位操作 已知若干点的经纬度坐标,要求在地图中进行定位: 1.通过Tool >Add X Y data 定位点,注意选择地理坐标系下的wgs 1984坐标系: 2.定位后的 ...