第三章 C#程序设计基础Word文档下载推荐.docx
《第三章 C#程序设计基础Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第三章 C#程序设计基础Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
8位无符号整数
char
字符数据类型
decimal
十进制数值类型
double
双精度浮点类型
float
单精度浮点类型
int
整型
long
长整型
sbyte
8位有符号整数
short
短整型
uint
无符号整型
ulong
无符号长整型
ushort
无符号短整型
C#语言中严格限定了每一种数值类型的取值范围,由于可移植性的需要,C#在这一点上是强制的。
例如:
int类型在所有执行环境中都是相同的,不需要而外编写代码来适应特定的平台。
尽管在某些特定环境中,严格指定数值类型的大小可能导致一些性能的损失,但为使程序具备可移植性,这是非常必要的。
3.1.2整型
C#定义了8中整数类型:
byte、sbyte、short、ushort、int、uint、long、ulong。
它们的位宽度和取值范围如表3-2所示。
表3-2整数类型的位宽度和取值范围
位宽度
取值范围
8
0~255
-128~127
16
-32768~32767
0~65535
32
-2147483648~2147483647
0~4294967295
64
-9223372036854775808~9223372036854775807
0~184********709551615
如上表所示,C#定义了各种整数类型的有符号形式和无符号形式。
有符号整数和无符号整数的不同在于对整数高阶位的处理方式。
对于有符号整数,C#编译器将产生代码,把整数的高阶位作为符号位。
如果符号位为0,那么此数为正数;
如果符号位为1,那么此数为负数。
最常用的整数类型是int类型。
int类型的变量通常在控制循环、索引数组和常见的整数运算中。
但当整数的取值范围超出int类型的取值范围时,可以有多种选择。
如果要存储的是无符号数,可以是uint类型;
对于数值较大的有符号数可以使用long类型;
对于取值更大的无符号数可以使用ulong类型。
3.1.3浮点类型
浮点类型可以表示带有小数部分的数据。
浮点类型有两种:
float和double,分别表示单精度数和双精度数。
float类型的宽度为32位,其取值范围大约是1.5E-324~1.7E+308,而double类型的宽度为64位,取值范围大约为5E-324~1.7E+308。
编写程序计算圆的面积。
//P3-1
usingSystem;
namespaceP3_1
{
classGetArea
publicstaticvoidMain()
doubler;
doublearea;
r=5.0;
area=3.1415926*r*r;
Console.WriteLine(“areaofcircleis:
”+area);
}
说明:
程序中GetArea、r、area都是标识符。
标识符是为类、对象、变量和方法等指定的名称。
C#中标识符通常是由字母、或者下划线开头,后跟字母、数字或者下划线组成的字符序列。
另外,C#语言是大小写敏感的,例如myvar和Myvar是两个不同的标识符。
关键字不能作为标识符使用,但是在关键字的前面加上@之后就可以作为标识符使用,但是这样做不是一种好的习惯。
C#语言的关键字请参考附录。
3.1.4decimal类型
decimal类型通常用于货币计算,它使用128位来表示1E-28~7.9E+28之间的数值。
众所周知,正常的浮点运算涉及到小数时常引发各种舍入误差。
decimal类型消除了这种误差,并且能够精确地表示28位有效数字。
这种在表示小数时不出现舍入误差的能力,使得它在被用于财务计算时非常有效。
例如,下面的程序是根据购买商品的数量,计算打折后应支付的费用。
namespaceP3_2
classusedecimal
decimalprice,discount,paymoney;
intnum;
price=19.95m;
discount=0.15M;
num=15;
paymoney=price*num*(1-discount);
Console.WriteLine(“themoneyshouldpayis:
¥”+paymoney);
注意,上例中的小数常量后面有一个m或M,这是必要的,否则这些数将被认为是标准的浮点常量。
3.1.5字符类型
不同于多数其他计算机语言(如C++),C#语言的字符不是8位,而是采用Unicode编码的16位字符类型。
Unicode定义的字符集大到足以表示所有人类语言中出现的字符。
C#中的char类型是无符号的16位类型,其取值范围是0~65535。
可以给字符类型的变量赋值,此时字符值需要用单引号括起来。
charch;
ch=’A’;
虽然C#的char类型定义为整数类型,但是它不能任意和整数混合使用。
这是因为没有从整数类型到char类型的自动类型转换。
例如,下面的代码是非法的。
ch=10;
//错误
3.1.6布尔类型
布尔类型(bool)表示逻辑值真或假。
C#语言采用保留字true和false来表示真和假。
因此,布尔类型的变量或表达式将只能取这两个值中的一个。
不同于其他计算机语言,C#没有定义布尔类型和整型之间的转换。
例如,1不能转换为true,0不能转换为false。
例如,下面的程序演示了布尔数据的使用。
namespaceP3_3
classusebool
boolb=false;
Console.WriteLine(b);
b=true;
Console.WriteLine(10>
15);
3.1.7输出格式控制
到目前为止,当使用WriteLine输出数据时,数据总是以默认的格式显示输出。
但是,C#语言提供了一种复杂的格式控制机制,允许用户自定义数据的显示方式。
本书后面将会讨论格式化的I/O,这里先简单介绍一些格式化的常用选项。
使用这些选项,将能够指定WriteLine的输出格式,从而产生更令人满意的结果。
当一个WriteLine语句要输出多个数据项时,用“+”将各个数据项连接起来,如下所示。
Console.WriteLine(“youordered”+2+“itemsat$”+3+“each”);
Console.WriteLine(“Hereis10/3”+10.0/3.0);
虽然,上面的方式使用很方便,但是不能控制数值的输出精度和小数位数。
要控制数字数据的格式,需要使用WriteLine语句的第二种形式,它允许嵌入格式化信息,如下所示:
WriteLine(“formatstring”,arg0,arg1,arg2,…,argn);
这种形式中,WriteLine的参数由逗号隔开,而不是“+”。
格式化字符串(formatstring)包含两项内容:
规则和格式说明符。
格式说明符采用如下的基本形式:
{argnum,width:
fmt}
其中,argnum中指定要显示的参数个数(从0开始)。
width中指定字段的最小宽度,fmt中指定格式。
执行过程中,当在格式字符串中出现格式说明符时,argnum中的数字指定了相应的参数argnum所在位置由所对应的参数取代,即格式说明符定义了参数显示位置。
width和fmt都是可选项。
因此,在其最简形式中,格式说明符只简单地表明显示哪个参数。
例如{0}表示arg0,{1}表示arg1。
Console.WriteLine(“Februaryhas{0}or{1}days.”,28,29);
输出结果是:
Februaryhas28or29days.
下面给出指定了最小字段宽度的示例:
Console.WriteLine(“Februaryhas{0,5}or{1,10}days.”,28,29);
从上面的输出可以看到,这里使用空格来确保输出达到最小字段的宽度。
如果实际输出的数值大于指定的最小宽度,则按实际的宽度输出。
下面给出使用格式说明符fmt的例子:
Console.WriteLine(“Hereis10/3:
{0:
#.##}”,10.0/3.0);
输出如下:
Hereis10/3:
3.33
本例中的#.##,是控制输出小数时只输出两位小数。
又如:
Console.WriteLine(“{0:
###,###.##}”,123456.567);
123,456.57
如果要用美元和美分的格式显示数值,则可以使用C格式说明符,例如:
decimalbalance;
balance=12323.09m;
Console.WriteLine(“Currencebalanceis{0:
C}”,balance);
Currencebalanceis$12,323.09
3.1.8直接量
C#中,直接量是指以固定格式表示的固定数值。
例如,常数100是一个直接量。
直接量通常也称为常量。
C#中的常量可以是任意数值类型的,每种不同类型的常量有不同的表示方式。
下面进行说明。
字符常量是用单引号括起来的单个字符。
例如,’A’,’%’,’a’。
整数常量是不包含小数部分的数。
例如,10,0,-100等。
浮点常量是带小数点的数。
例如,11.23,-96.3,0.0等。
由于C#是一种强类型语言,所以直接量也有类型。
自然地,这也会引入如下问题:
数字直接量的类型是什么?
例如,1212311或者0.23的类型是什么?
幸运的是,C#给出了一些易于理解的规则来解决这些问题。
第一,对于整数直接量,直接量的类型取能保存该数值的最小整数类型即可,首先考虑的是int类型。
类型的取值范围由小到大依次是:
int、uint、long、ulong,具体类型要由数值所属的范围决定。
第二,浮点数直接量的类型统一为double类型。
对于直接量,如果想改变C#默认的类型,可以通过附加后缀来显示地指定其类型。
如要指定long类型的直接量,加上后缀l或L。
例如,12是int类型,12L则是lo