您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第二章变量运算符和表达式
变量、运算符和表达式上海师范大学主讲:於家变量•变量有多种类型,比如自然数、整数、有理数、实数等。•C#中如何定义各种类型的变量?变量如何运算?整型变量StaticvoidMain(string[]args){inta;//声明变量aa=7;//为变量a赋值intb;//声明变量bb=2;//为变量b赋值intadd;//声明变量addadd=a+b;//求变量a、b的和//输出结果Console.WriteLine(“{0}+{1}={2}”,a,b,add);}声明整型变量inta;•该语句被执行时,系统会在内存中分配一块4字节的空间,用来存储变量a的值。整型变量的默认值为0。变量类型变量名称赋值语句a=7;•把变量a的值设置为7(原先未赋值时默认为0)。*赋值运算符“=”不是“相等”的意思。并非是比较左右两边是否相等。赋值语句add=a+b;•把a+b的值赋给add729内存addba输出Console.WriteLine(“{0}+{1}={2}”,a,b,add);•{0},{1}和{2}是三个占位符,表示该处插入变量值,{0}处插入第一个变量a的值,{1}处插入第二个变量b的值,{2}处插入第三个变量add的值。赋值语句n=n+100;•将n的增加100,然后重新赋值给nintn;n=100;n=200;n=n+100;Console.WriteLine(“n={0}”,n);整型变量的类型•int型•short型•long型•无符号型Int型变量的取值范围•Int型变量占用4个字节的空间,共32位。为了表示负数,把最高位定义为符号位,0表示正数,1表示负数,后面的31位表示数值的大小。•Int型的取值范围是-231~231-1,即-2147483648~2147483647short型•某些情况下使用int型太浪费•short型变量占用2个字节,最高位表示正负号,后面的15位表示数值大小,取值是-215~215-1,即-32768~32767。long型•某些情况下int型变量取值范围不够用•long型占用8个字节,最高位表示正负号,后面的63位表示数值大小,范围可达到-263~263-1,即-9223372036854775808~9223372036854775807。无符号型•在计数、年龄统计等情况下,不需要负数•使用uint型变量(u是unsigned的缩写,无符号的),32位全部用来表示正整数,范围是0~232-1。相应的,有ushort和ulong型变量。溢出shorta;a=32768;实数型变量•实数型也称为浮点型类型字节数取值范围有效数字备注float4±1.5×10-45~3.4×10387位单精度实数double8±5.0×10-324~1.7×1030815/16位双精度实数decimal16±1.0×10-28~7.9×102828位金融货币从上表可以看出,decimal的有效位数很大,达到了28位,但是表示的数据范围却比float和double类型小。decimal类型并不是C#中的基础类型,所以使用的时候会对计算时的性能有影响。Decimal数据类型可以在VisualStudio编辑器中使用,只要在一个浮点类型的值后加一个大写或小写的M,则编辑器会认为这个浮点类型的值是一个Decimal类型。这种128位高精度十进制数表示法通常用在财务计算中。要注意的是,在.NET环境中,计算该类型的值会有性能上的损失,因为它不是基本类型。decimal[(p[,s])]andnumeric[(p[,s])]固定有效位数和小数位数的数字。当使用最大有效位数时,有效值是从-10^38+1到10^38-1。decimal的SQL-92同义字是dec和dec(p,s)。numeric的功能相当於decimal。p(有效位数)可储存的最大十进位数总数,小数点左右两侧都包括在内。有效位数必须是1至最大有效位数38之间的值。预设有效位数是18。s(小数位数)小数点右侧所能储存的最大十进位数。小数位数必须是从0到p的值。只有在指定了有效位数时,才能指定小数位数。预设小数位数是0;因此,0=s=p。最大储存体大小会随著有效位数而不同。例:decimal(2,1),有效长度为2,小数位占1位。此时,插入数据“12.3”、“12”等会出现“数据溢出错误”的异常;插入“1.23”或“1.2345...”会自动四舍五入成“1.2”;插入“2”会自动补成“2.0”,以确保2位的有效长度,其中包含1位小数。实数常量•实数常量在默认情况下是双精度的。要把实数常量赋值给单精度常量,需要添加后缀:小写的f或者大写的F。•如:125.36f、3.1415926F相当于类型转换程序示例floatx=3.14159265358979f;doubley=3.14159265358979;Console.WriteLine(x={0},x);Console.WriteLine(y={0},y);单精度有效位数是7位,有效数字被四舍五入了。字符•字符包括英文字母、中文汉字、各类特殊字符、数字符号等等。•C#中用单引号标记字符•比如’f’,’#’,’8’等其中’8’只是用来显示8这个符号,不是一个可以用于计算的数字。字符变量和字符串变量声明•字符变量charc;c=‘f’;•字符串变量strings;s=fine;字符串的输出与读取•输出字符串,并换行Console.WriteLine(字符串);•输出字符串,不换行Console.Write(字符串);•读取字符串Console.ReadLine(字符串);示例程序Console.WriteLine(“Pleaseinputyourname”);Stringname=Console.ReadLine();Console.WriteLine(“Yournameis”+name);把读取的字符串赋值给变量name,然后输出。读取字符Intch=Console.Read();从输入窗口读取一个字符,返回字符的ASCII编码。如:输入f,返回f的ASCII码102读取数字需要使用Convert.ToDouble()把字符串转换为double型数字doublea=Convert.ToDouble(Console.ReadLine());ASCII编码•为了方便在计算机里使用字符,在计算机诞生之初,制定了ASCII编码(AmericanStandardCodeforInformationInterchange),即美国信息交换标准码。标准ASCII码用7位二进制数来表示128个字符,包括英文字母、希腊字母、数字、常用的字符和各种控制符。后来ASCII码扩展至256个字符。标准ASCII码表(部分)ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34”66B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS40(72H104h9HT41)73I105i10LF42*74J106j11VT43+75K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE48080P112pASCII编码•ASCII表上的0~31分配给了控制字符,用于控制外围设备,比如打印机;32~126分配给可打印字符,127分配给DELETE命令。Unicode编码•ASCII码可以表示256个字符,对西方的字母语言编码已经足够了。但是对于中国的汉字,却远远不够。•为解决汉字的编码问题,1981年中国制定了GB2312编码标准,用两个字节表示一个汉字,可以存储6万多个字符。日文、韩文、繁体中文等文字都使用类似的方法来构建本地字符集编码。这些字符集都使用多个字节来表示一个字符,因此这些编码称为多字节字符集(Charset)。Unicode编码•多字节字符集由于各个国家和地区之间定义的字符集编码标准不同,会产生不兼容的问题。比如用GB2312编码的软件,在繁体中文的环境下就会出现乱码。•Unicode编码:世界通用的编码。为全世界每个字符提供统一的编码,同一个字符,不论在什么平台、什么软件上、什么语言环境中,都有相同的编码。转义字符Console.WriteLine(“Whereareyoufrom?\nIamfromShanghai.”);\n在这里起换行的作用。像这样控制文本格式的特殊字符称为转义字符。转义字符转义字符功能Unicode编码\’单引号0027\”双引号0022\\反斜杠005C\0空0000\a警告0007\b退格0008\f换页000C\r回车000D转义字符Console.WriteLine(“C:\STUDY\2010”);由于双引号用来标记字符串,反斜杠“\”用来标记转义字符,所以在输出的时候要用转义字符。Console.WriteLine(“C:\\STUDY\\2010”);@控制符•前缀@可以使引号里的内容原样输出,而不理会里面的转义字符。Console.WriteLine(@“Whereareyoufrom?\nIamfromShanghai.”);+运算符•将两个字符串用“+”运算符连接。stringstrSentence=“ShanghaiNormalUniversity”;strSentence=strSentence+“isafamousuniversityinShanghai.”Console.WriteLine(strSentence);变量的命名规则•变量的第一个字符必须是字母、下划线或者@;•后面的字符可以使字母、数字、下划线;•变量不能和关键词重名(比如int、double、float、还有以后我们要讲的if、for等关键词);•区分大小写(A与a是两个变量);•命名选择有意义的名称,更容易理解。变量的命名规则•例子(哪些是错误的变量名)ag1floatchkListBox_Count5thRoom@shnu推荐的变量命名方式•变量名称第一个单词全部小写,最好用简称来表示变量的类型,以后在用变量的时候可以很容易的看出变量的类型。•如:stringstrName;doubledblNumber;常量类型后缀示例int无10,100,-10,-100uintu或U1u,100u,2007Ulongl或L10l,100L,-888888Lulongul或UL200000000ULfloatf或F1.0f,3.14f,1.155Fdoubled或D或无1.0,3.1415926535897Ddecimalm或M1000.00m符号常量constdoublePI=3.14;•为什么要使用符号常量?•const常量只在声明的时候赋值,在程序运行中不能改变其值。因此,const常量使程序易于维护,而且大大增强了程序的健壮性。如果代码中修改了某个常量的值,编译器会在程序编译的时候指出该错误。练习•A=6,B=8,请交换A与B的值。intA=6;intB=8;A=B;B=A;Console.WriteLine(A=+A);Console.WriteLine(B=+B);练习6A8B8888•分析练习intA=6;intB=8;intC;//中间变量C=A;//把A的值暂存到C中A=B;//把B的值赋给AB=C;//把C的暂存的值赋给BConsole.WriteLine(A=+A);Console.WriteLine(B=+B);练习6A8B6888•分析66C866作业•编写程序,输出一个菱形。•现在需要定义各类变量来存储并输出学生信息。其中,定义字符串变量记录学生的名字,定义字符变量记录性别,整型变量记录年级,浮点型变量记录某门课程的成绩。然后输入三个学生的信息,并输出。•交换三个变量的值。A=1,B=2,C=
本文标题:第二章变量运算符和表达式
链接地址:https://www.777doc.com/doc-2126302 .html