




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
书名:C#面向对象程序设计 ISBN: 978-7-111-30056-4 作者:王晶晶 出版社:机械工业出版社 本书配有电子课件 C#面向对象程序设计 高职高专 ppt 课件 第第2 2章章 数据类型、运算符与表达式数据类型、运算符与表达式 n n 数据类型数据类型 n n 类型转换类型转换 n n 运算符和表达式运算符和表达式 C#面向对象程序设计 高职高专 ppt 课件 2.1 2.1 数据类型数据类型 C#C#语言支持以下数据类型:语言支持以下数据类型: 数据类型 值类型 引用类型 结构类型 简单类型 枚举类型 整数类型 浮点类型 小数类型 字符类型 布尔类型 类类型 数组类型 接口类型 值类型用来存储实际值,而引用类型则用来存储对实际数据的引用。 C#面向对象程序设计 高职高专 ppt 课件 .1值类型值类型 n n 值类型包含简单类型、枚举类型和结构类型。类型是同类型数据的抽值类型包含简单类型、枚举类型和结构类型。类型是同类型数据的抽 象,不同的类型在象,不同的类型在C#C#中用不同的类型标识符来表示。如表中用不同的类型标识符来表示。如表2-12-1。 表2-1 值类型 类型 描述 简单类 型(Simple type)有符号整数:sbyte, short, int, long 无符号整数:byte, ushort, uint, ulong 字符类型:char 浮点类型:float, double 小数类型:decimal 布尔类型:bool 枚举类 型(Enum type)enum E 结构类型(Struct type)struct S C#面向对象程序设计 高职高专 ppt 课件 n n 1.1.简单类型简单类型 从计算机的表示角度来看,简单类型从计算机的表示角度来看,简单类型 又可分为整数类型、浮点类型、小数类型又可分为整数类型、浮点类型、小数类型 、布尔类型和字符类型。所有的简单类型、布尔类型和字符类型。所有的简单类型 (C# C# 语言的组成部分)均为语言的组成部分)均为 .NET .NET Framework Framework 系统类型的别名。例如,系统类型的别名。例如,int int 是是 System.Int32 System.Int32 的别名。的别名。 C#面向对象程序设计 高职高专 ppt 课件 整数类型整数类型 n n C#C#中提供了中提供了8 8种整数类型,它们的取值范围及类型标识符见表种整数类型,它们的取值范围及类型标识符见表2-22-2所示所示 。 描述位数类型标识符取值范围 有符号整数8sbyte-128127 16short-3276832767 32int-2147483648-2147483647 64long-92233720368547758089223372036854775807 无符号整数8byte0255 16ushort065535 32uint04294967295 64ulong018446744073709551615 表表2-2 2-2 整数类型表整数类型表 C#面向对象程序设计 高职高专 ppt 课件 C#C#提供了两种数据类型来表示小数:单精度浮点型提供了两种数据类型来表示小数:单精度浮点型(float)(float)和双精度浮点和双精度浮点 型型(double)(double)。两者的划分依据是取值范围和精度的不同,见表。两者的划分依据是取值范围和精度的不同,见表2-32-3。 浮点类型浮点类型 表2-3 浮点类型表 描述位数类型标识 符取值范围 单精度浮点型32float1.510-453.41038,7位精 度 双精度浮点型64double 5.010-3241.710308, 1516位精度 C#面向对象程序设计 高职高专 ppt 课件 小数类型小数类型 为了满足财务和金融计算领域方面高精度的要求,为了满足财务和金融计算领域方面高精度的要求,C#C#提供了小数提供了小数 类型(类型(decimaldecimal)这种高精度的数据类型,避免浮点类型计算造成的)这种高精度的数据类型,避免浮点类型计算造成的 误差。误差。 小数类型数据的后面必须加小数类型数据的后面必须加mm或或MM后缀来表示它是小数类型的,如后缀来表示它是小数类型的,如 3.14m3.14m。否则会被解释成标准的浮点类型的数据。否则会被解释成标准的浮点类型的数据。 表表2-42-4列出了小数类型的取值范围及精度。列出了小数类型的取值范围及精度。 表2-4 小数类型表 描述位数类型标识 符 取值范围 十进制类 型 128decimal1.010-287.91028 28到29位 有效 C#面向对象程序设计 高职高专 ppt 课件 字符类型字符类型 C# C#提供的字符类型按照国际上公认的标准,采用提供的字符类型按照国际上公认的标准,采用UnicodeUnicode 字符集。它可以表示世界上大部分语言种类。所有字符集。它可以表示世界上大部分语言种类。所有UnicodeUnicode字符字符 的集合构成字符类型。的集合构成字符类型。 字符类型的描述见表字符类型的描述见表2-52-5。 表2-5 字符类型表 描述位数数据类 型 取值范围 字符类 型 16charU+0000 到 U+ffff 16 位 Unicode 字符 C#面向对象程序设计 高职高专 ppt 课件 给一个字符类型的变量赋值:给一个字符类型的变量赋值: char name = char name = a a ; ; char char类型的变量值必须用单引号括起来类型的变量值必须用单引号括起来 。单引号内的字符数量必须且只能是一个。单引号内的字符数量必须且只能是一个 ,并且不能是单引号或者反斜杠。,并且不能是单引号或者反斜杠。 为了表示单引号和反斜杠等特殊的字符为了表示单引号和反斜杠等特殊的字符 ,C#C#提供了转义符,如表提供了转义符,如表2-62-6所示。所示。 C#面向对象程序设计 高职高专 ppt 课件 表2-6 转义字符 转义符含义 单引号 ”双引号 反斜杠 0空字符(Null) a发出一个警告 b倒退一个字符 f换页 n换行,将当前的位置移到下一行开头 r回车,将当前的位置移到本行的开头 t水平方向的Tab v垂直方向的Tab 布尔类型布尔类型 布尔类型表示现实中的布尔类型表示现实中的“ “真真” ”或或“ “假假” ”这两个概念,主要这两个概念,主要 用来进行逻辑判断。在用来进行逻辑判断。在C#C#中,分别采用中,分别采用truetrue和和falsefalse这这 两个值来表示两个值来表示“ “真真” ”和和“ “假假” ”,如表,如表2-72-7所示。所示。 表2-7 布尔类型 描述位数数据类型取值范围 布尔类型8boolTrue或False 2.2.枚举类型枚举类型 假设要在程序中表示一年中的季节,可以假设要在程序中表示一年中的季节,可以 使用整数使用整数0 0、1 1、2 2和和3 3来分别表示春季、夏季、来分别表示春季、夏季、 秋季和冬季,这虽然可行,但并不直观。为此秋季和冬季,这虽然可行,但并不直观。为此 ,C#C#中提供了一个更好的方案,使用枚举类型中提供了一个更好的方案,使用枚举类型 可以将一年中的四季分别用可以将一年中的四季分别用SpringSpring、SummerSummer 、AutumnAutumn和和WinterWinter这些直观的符号来表示,这些直观的符号来表示, 便于阅读和理解。枚举类型是用户自定义的数便于阅读和理解。枚举类型是用户自定义的数 据类型,是一种允许用符号代表数据的值类型据类型,是一种允许用符号代表数据的值类型 。当程序中某个变量具有一组确定的值,通过。当程序中某个变量具有一组确定的值,通过“ “ 枚举枚举” ”可以将其值一一列举出来。可以将其值一一列举出来。 比如,声明一个代表季节的枚举类型比如,声明一个代表季节的枚举类型SeasonSeason, 可以这样声明:可以这样声明: enum Season Spring, Summer, Autumn, enum Season Spring, Summer, Autumn, Winter;Winter; enum enum 关键字用于声明枚举。关键字用于声明枚举。SeasonSeason是枚举是枚举 名,花括号名,花括号“ “ ” ”和和“ “ ” ”括起来的部分是枚举成员表,括起来的部分是枚举成员表, 枚举成员之间用逗号分隔,任何两个枚举成员不枚举成员之间用逗号分隔,任何两个枚举成员不 能具有相同的名称。这里声明了一个能具有相同的名称。这里声明了一个SeasonSeason枚举枚举 类型,它包含类型,它包含Spring, Summer, Autumn, Spring, Summer, Autumn, Winter4Winter4个枚举成员。个枚举成员。 声明好了一个枚举类型之后,我们就可以像使用简单类型一样来声明枚举声明好了一个枚举类型之后,我们就可以像使用简单类型一样来声明枚举 类型的变量了,格式为:类型的变量了,格式为: 枚举类型名枚举类型名 变量名;变量名; 以前面定义的以前面定义的SeasonSeason枚举类型为例,要声明该类型的变量枚举类型为例,要声明该类型的变量, ,可以这样:可以这样: enum Season Spring, Summer, Autumn, Winter;enum Season Spring, Summer, Autumn, Winter; Season season1,season2,season3,season4;Season season1,season2,season3,season4; season1=Season.Spring;season1=Season.Spring; season2=Season.Summer;season2=Season.Summer; season3=Season.Autumn;season3=Season.Autumn; season4=Season.Winter;season4=Season.Winter; 这样,这样,season1season1,season2season2,season3,season4season3,season4这这4 4个变量的取值分别个变量的取值分别 为为Spring,SummerSpring,Summer,AutumnAutumn和和WinterWinter。 每种枚举类型都有基础类型,枚举元素的默认基础类型为每种枚举类型都有基础类型,枚举元素的默认基础类型为intint。在。在SeasonSeason枚举中枚举中 ,SpringSpring为为 0 0,SummerSummer为为 1 1,AutumnAutumn为为 2 2,依此类推。默认情况下,依此类推。默认情况下,C#C# 规定第规定第1 1个枚举成员的值取个枚举成员的值取0 0,其它成员按顺序依次增,其它成员按顺序依次增1 1。在编程时,可以根据。在编程时,可以根据 需要为枚举成员赋值。需要为枚举成员赋值。 几种为枚举成员赋值的情况几种为枚举成员赋值的情况 。 (1 1)为第)为第1 1个枚举成员赋值个枚举成员赋值 enum Season Spring=1, Summer, Autumn, Winter;enum Season Spring=1, Summer, Autumn, Winter; 在此枚举中,强制元素序列从在此枚举中,强制元素序列从 1 1 而不是而不是 0 0 开始。开始。 (2 2)为某一个枚举成员赋值)为某一个枚举成员赋值 enum Season Spring, Summer, Autumn=6, Winter;enum Season Spring, Summer, Autumn=6, Winter; 从第一个枚举成员从第一个枚举成员SpringSpring到被赋值的枚举成员到被赋值的枚举成员AutumnAutumn前的那个枚举成员前的那个枚举成员 SummerSummer是按默认方式取值的,即是按默认方式取值的,即SpringSpring为为0 0,SummerSummer为为1 1。被赋值的枚。被赋值的枚 举成员举成员AutumnAutumn取赋给它的值取赋给它的值6 6,它后面的枚举成员则在此基础上依次增,它后面的枚举成员则在此基础上依次增1 1, 即即WinterWinter为为7 7。 (3 3)为多个枚举成员赋值)为多个枚举成员赋值 enum Season Spring, Summer=4, Autumn=6, Winter;enum Season Spring, Summer=4, Autumn=6, Winter; 被赋值的枚举成员取所赋给它的值,其后的枚举成员的值依次加被赋值的枚举成员取所赋给它的值,其后的枚举成员的值依次加1 1,在第一个被,在第一个被 赋值的枚举成员赋值的枚举成员SummerSummer之前的枚举成员,按默认方式取值。故之前的枚举成员,按默认方式取值。故SpringSpring取值取值 为为0 0,SummerSummer取值为取值为4 4,AutumnAutumn取值为取值为6 6,WinterWinter取值为取值为7 7。 枚举成员的值在不经过显示转换前,是不会变换成整数值的。 例例2-1 2-1 枚举类型的应用枚举类型的应用 using System;using System; public class EnumTest public class EnumTest enum WeekDay Sat=1, Sun, Mon, Tue, Wed, enum WeekDay Sat=1, Sun, Mon, Tue, Wed, Thu, Fri;Thu, Fri; static void Main() static void Main() int x = (int)WeekDay.Sun; int x = (int)WeekDay.Sun; int y = (int)WeekDay.Fri; int y = (int)WeekDay.Fri; Console.WriteLine(“Sun = 0“, x);Console.WriteLine(“Sun = 0“, x); Console.WriteLine(“Fri = 0“, y); Console.WriteLine(“Fri = 0“, y); 输出结果为:输出结果为: Sun=2Sun=2 Fri=7 Fri=7 在这个例子中,我们通过在这个例子中,我们通过“ “枚举名枚举名. .枚举成员枚举成员” ”的方式来访问枚的方式来访问枚 举成员,如代码中的举成员,如代码中的WeekDay.SunWeekDay.Sun。 3.3.结构类型结构类型 利用前面介绍过的数据类型进行运算似乎已经足够了利用前面介绍过的数据类型进行运算似乎已经足够了 。但是,我们会经常碰到一些更为复杂的情况。比如,同。但是,我们会经常碰到一些更为复杂的情况。比如,同 学录的记录中包含姓名、性别、家庭住址等信息。如果将学录的记录中包含姓名、性别、家庭住址等信息。如果将 姓名、性别、家庭住址分别定义为互相独立的简单类型,姓名、性别、家庭住址分别定义为互相独立的简单类型, 则难以反映它们之间的内在联系,这些项都与某一学生相则难以反映它们之间的内在联系,这些项都与某一学生相 联系。那么,有没有好的解决方法呢?联系。那么,有没有好的解决方法呢? C#C#中提供了一种称为结构类型的数据类型用来有组织中提供了一种称为结构类型的数据类型用来有组织 地把这些不同类型的数据信息存放到一起。结构类型是用地把这些不同类型的数据信息存放到一起。结构类型是用 户自定义的数据类型。使用结构类型可以方便地存储多条户自定义的数据类型。使用结构类型可以方便地存储多条 不同类型的数据,极大地方便了编程人员对大量信息的管不同类型的数据,极大地方便了编程人员对大量信息的管 理。理。C#C#中的结构类型类似于中的结构类型类似于C C语言中的结构体。语言中的结构体。 结构类型采用结构类型采用structstruct来声明,格式如下来声明,格式如下 : struct struct 结构名结构名 / /结构成员定义结构成员定义 说明:说明: 1.struct1.struct是一个关键字,表明声明的是一个结构体;是一个关键字,表明声明的是一个结构体; 2.2.结构名的命名需符合结构名的命名需符合C#C#标识符的命名规范:以字母或者标识符的命名规范:以字母或者 下划线开头,其后可以跟任意个字母、数字或者下划线。下划线开头,其后可以跟任意个字母、数字或者下划线。 3.3.花括号中的内容称为结构体,定义结构中所包含的所有成花括号中的内容称为结构体,定义结构中所包含的所有成 员。每个成员的声明都采用如下形式:员。每个成员的声明都采用如下形式: 访问修饰符访问修饰符 数据类型数据类型 成员名;成员名; 声明同学录的记录结构声明同学录的记录结构 struct studentstruct student public string name;public string name; public string sex;public string sex; public string address;public string address; 其中,其中,publicpublic是访问修饰符,用来修饰数据成员的可访问性是访问修饰符,用来修饰数据成员的可访问性 。关于访问修饰符的介绍我们会在类一章中做详细介绍。关于访问修饰符的介绍我们会在类一章中做详细介绍。 声明了一个结构体类型,就可以定义该类型的声明了一个结构体类型,就可以定义该类型的 变量了,格式如下:变量了,格式如下: 结构类型名结构类型名 变量名;变量名; 如:如:student student1;student student1; 通过结构变量加上访问符通过结构变量加上访问符“ “.” .”号,再跟成员的名号,再跟成员的名 称,可以访问结构的成员,格式为:称,可以访问结构的成员,格式为: 结构变量名结构变量名. .成员名;成员名; 如:如:=“=“王刚王刚” ”; ; 可以把结构类型作为另一个结构的成员,形成结可以把结构类型作为另一个结构的成员,形成结 构的嵌套。例如,构的嵌套。例如,“ “同学录同学录” ”这个结构中又包括了这个结构中又包括了“ “地址地址 ” ”这个结构,这个结构,“ “地址地址” ”结构类型包括城市、街道和门牌号结构类型包括城市、街道和门牌号 码码3 3个成员。个成员。 请看以下示例:请看以下示例: struct Studentstruct Student public string name;public string name; public string sex;public string sex; public string addresspublic string address public string city;public string city; public string street;public string street; public uint no;public uint no; Student student1;Student student1; 2.1.2 2.1.2 引用类型引用类型 引用类型是和值类型并列的类型,值类引用类型是和值类型并列的类型,值类 型比较简单,对于那些结构比较复杂、抽型比较简单,对于那些结构比较复杂、抽 象能力比较强的数据,就需要使用引用类象能力比较强的数据,就需要使用引用类 型来定义。型来定义。C#C#中引用类型有中引用类型有4 4种:类类型种:类类型 、数组类型、接口类型和委托类型。关于、数组类型、接口类型和委托类型。关于 它们的详细介绍,我们会在后续章节中进它们的详细介绍,我们会在后续章节中进 行。行。 2.2 2.2 类型转换类型转换 在现实生活中,经常需要在不同的数在现实生活中,经常需要在不同的数 据类型之间进行转换。比如,举行一次演据类型之间进行转换。比如,举行一次演 讲比赛,获奖的比例是讲比赛,获奖的比例是6%6%,如果参加演讲,如果参加演讲 比赛的总人数是比赛的总人数是170170个人,那么获奖的人数个人,那么获奖的人数 就是就是1706%=10.21706%=10.2个人。在这种情况下个人。在这种情况下 ,就不得不舍去,就不得不舍去0.20.2,把,把10.210.2这个的浮点数这个的浮点数 变成一个整数变成一个整数1010来对待。这就是现实生活来对待。这就是现实生活 中的数据类型转换的例子。在中的数据类型转换的例子。在C#C#语言中,语言中, 数据类型的转换可以分为两类:隐式类型数据类型的转换可以分为两类:隐式类型 转换和显式类型转换。转换和显式类型转换。 2.2.1 2.2.1 隐式类型转换隐式类型转换 隐式类型转换是系统默认的、不需要加隐式类型转换是系统默认的、不需要加 以声明就可以进行的转换。在隐式类型转以声明就可以进行的转换。在隐式类型转 换过程中,编译器无需对转换进行详细检换过程中,编译器无需对转换进行详细检 查就能够安全地执行转换。比如,从查就能够安全地执行转换。比如,从intint类类 型转换到型转换到longlong类型就是一种隐式类型转换类型就是一种隐式类型转换 。 表表2-82-8列出了在列出了在C#C#中可以进行的各种隐中可以进行的各种隐 式数值转换。式数值转换。 表表2-8 2-8 隐式转换表隐式转换表 类型可以安全的转换为 sbyteshort、int、long、float、double或decimal byteshort、ushort、int、uint、long、ulong、float、double或decimal shortint、long、float、double或decimal ushortint、uint、long、ulong、float、double或decimal intlong、float、double或decimal uintlong、ulong、float、double或decimal longfloat、double或decimal ulongfloat、double或decimal charushort、int、uint、long、ulong、float、double或decimal floatdouble 例例2-2 2-2 隐式类型转换(将字符类型隐式转换为整型)隐式类型转换(将字符类型隐式转换为整型) using System;using System; using System.Collections.Generic;using System.Collections.Generic; using System.Text;using System.Text; namespace ConvertDatanamespace ConvertData class Program class Program static void Main(string args) static void Main(string args) char c= a ; char c= a ; Console.WriteLine(“c=0“,c); Console.WriteLine(“c=0“,c); int Q = c; int Q = c; Console.WriteLine(“Q=0“, Q); Console.WriteLine(“Q=0“, Q); 程序运行结果如图程序运行结果如图2-12-1所示。所示。 图2-1 程序运行结果 例例2-3 2-3 隐式类型转换(将整型隐式转换为字符类型)隐式类型转换(将整型隐式转换为字符类型) using System;using System; using System.Collections.Generic;using System.Collections.Generic; using System.Text;using System.Text; namespace ConvertDatanamespace ConvertData class Program class Program static void Main(string args) static void Main(string args) int a = 97; int a = 97; Console.WriteLine(“a=0“,a); Console.WriteLine(“a=0“,a); char c = a; char c = a; Console.WriteLine(“c=0“, c); Console.WriteLine(“c=0“, c); 程序运行结果如图程序运行结果如图2-22-2所示。所示。 图2-2 错误列表 这个程序在编译时出现了错误,我们从错误列表中可知int类型是不能隐 式转换成char类型的,但是在上个程序中,char类型是可以隐式转换为 int类型的,这个问题请注意。 2.2.2 2.2.2 显式类型转换显式类型转换 显式类型转换又叫做强制类型转换。与隐式显式类型转换又叫做强制类型转换。与隐式 类型转换相反,显式转换需要用户明确的指定转类型转换相反,显式转换需要用户明确的指定转 换类型。格式如下:换类型。格式如下: (类型标识符)表达式(类型标识符)表达式 将表达式的值的类型转换为类型标识符的类型将表达式的值的类型转换为类型标识符的类型 。 如(如(intint)3.14 3.14 表示的是把表示的是把doubledouble类型的类型的 3.143.14转换成转换成intint类型。类型。 除了使用这种方式进行显式转换外,还可以使除了使用这种方式进行显式转换外,还可以使 用用ConvertConvert命令进行显式转换。表命令进行显式转换。表2-92-9列出了使列出了使 用这种方式可以进行的显式转换。用这种方式可以进行的显式转换。 表表2-9 Convert2-9 Convert命令进行的显示转换命令进行的显示转换 命令结果 Convert.ToBoolean(val)val转换为 bool Convert.ToByte(val)val转换为 byte Convert.ToChar(val)val转换为 char Convert.ToDecimal(val)val转换为 decimal Convert.ToDouble(val)val转换为 double Convert.ToInt16(val)val转换为 short Convert.ToInt32(val)val转换为 int Convert.ToInt64(val)val转换为 long Convert.ToSByte(val)val转换为 sbyte Convert.ToSingle(val)val转换为 float Convert.ToString(val)val转换为 string Convert.ToUInt16(val)val转换为 ushort Convert.ToUInt32(val)val转换为 uint Convert.ToUInt64(val)val转换为 ulong 表表2-10 2-10 显式转换表显式转换表 类型可以转换 的类型 sbytebyte、ushort、uint、ulong或char bytesbyte或char shortsbyte、byte、ushort、uint、ulong或char ushortsbyte、byte、short或char intsbyte、byte、short、ushort、uint、ulong或char uintsbyte、byte、short、ushort、int或char longsbyte、byte、short、ushort、int、uint、ulong或char ulongsbyte、byte、short、ushort、int、uint、long或char charsbyte、byte或short floatsbyte、byte、short、ushort、int、uint、long、ulong、char或decimal doublesbyte、byte、short、ushort、int、uint、long、ulong、char、float或decimal decimalsbyte、byte、short、ushort、int、uint、long、ulong、char、float或double 例例2-4 2-4 将整型转换成字符类型将整型转换成字符类型 using System;using System; using System.Collections.Generic;using System.Collections.Generic; using System.Text;using System.Text; namespace ConvertDatanamespace ConvertData class Program class Program static void Main(string args) static void Main(string args) int a = 97; int a = 97; Console.WriteLine(“a=0“,a); Console.WriteLine(“a=0“,a); char c =Convert.ToChar(a);char c =Convert.ToChar(a); Console.WriteLine(“c=0“, c); Console.WriteLine(“c=0“, c); 编译、运行程序,结果如图编译、运行程序,结果如图2-12-1所示。所示。 2.32.3运算符和表达式运算符和表达式 运算符是表示各种不同运算的符号。当执运算符是表示各种不同运算的符号。当执 行加法、减法、乘法和除法运算时分别需行加法、减法、乘法和除法运算时分别需 要使用、要使用、* *和和/ /符号,这些符号符号,这些符号( (、 、* *和和/)/)称为运算符。表达式是用运算符称为运算符。表达式是用运算符 将运算对象连接起来的运算式,是程序语将运算对象连接起来的运算式,是程序语 言中最基本的对数据进行加工和处理的过言中最基本的对数据进行加工和处理的过 程。注意,单个常数或变量也是表达式。程。注意,单个常数或变量也是表达式。 2.3.1 2.3.1 运算符的类型运算符的类型 C# C#提供了非常丰富的运算符,大致可提供了非常丰富的运算符,大致可 以分为以下几类:算术运算符、赋值运算以分为以下几类:算术运算符、赋值运算 符、关系运算符、逻辑运算符、位运算符符、关系运算符、逻辑运算符、位运算符 、条件运算符和其他运算符等。、条件运算符和其他运算符等。 算术运算符算术运算符 算术运算符用于对操作数进行算术运算,算术运算符用于对操作数进行算术运算,C#C#的算的算 术运算符见表术运算符见表2-112-11。 运算符含义 +加 减 *乘 /除 %取余 +自增1 -自减1 表2-11 算术运算符 关系运算符关系运算符 关系运算符用于比较两个值的大小,返回一个布尔值。关系运算符用于比较两个值的大小,返回一个布尔值。 C#C#的关系运算符见表的关系运算符见表2-122-12。 表2-12 关系运算符 运算符含义 =等于 !=不等于 大于 =大于等于 逻辑运算符逻辑运算符 逻辑运算符用于表示两个布尔值之间的逻辑关系,逻辑运逻辑运算符用于表示两个布尔值之间的逻辑关系,逻辑运 算结果是布尔型。算结果是布尔型。C#C#的逻辑运算符见表的逻辑运算符见表2-132-13。 表2-13 逻辑运算符 运算符描述 !逻辑非 1 using System; 2 using System.Collections.Generic;2 using System.Collections.Generic; 3 using System.Text;3 using System.Text; 4 namespace ConsoleApplication14 namespace ConsoleApplication1 5 5 6 class Program 6 class Program 7 static void Main(string args) 7 static void Main(string args) 8 8 9 Console.WriteLine(“5+7.5=0“,5+7.5);9 Console.WriteLine(“5+7.5=0“,5+7.5); 10 10 Console.WriteLine(“7/4=0,sizeof(int)*10/6.0=1“,7/4,sizeof(iConsole.WriteLine(“7/4=0,sizeof(int)*10/6.0=1“,7/4,sizeof(i nt)*10/6.0)nt)*10/6.0) ; ; 11 int x=5;11 int x=5; 12 Console.WriteLine(“+x=0,x=1“,+x,x);12 Console.WriteLine(“+x=0,x=1“,+x,x); 13 int y=5;13 int y=5; 14 Console.WriteLine(“y +=0,y=1“,y+,y);14 Console.WriteLine(“y +=0,y=1“,y+,y); 15 if(y15 if(y !=0)!=0) 16 Console.WriteLine(“5316 Console.WriteLine(“53 ?5?5 :2=0“,53:2=0“,53 ?5?5 :2);:2); 17 17 Console.WriteLine(“Console.WriteLine(“ !(62)|(58); 18 18 19 19 20 20 程序的运行结果如图程序的运行结果如图2-32-3所示。所示。 图2-3 运行结果 说明:说明: 1.1.在算术表达式中,当操作数的类型不同时,在算术表达式中,当操作数的类型不同时,C#C#编译器将先使用类型转换编译器将先使用类型转换 规则,从而确保操作以可预测的方式执行。比如第规则,从而确保操作以可预测的方式执行。比如第9 9行代码,先把第行代码,先把第 一个操作数一个操作数5 5转换成转换成floatfloat类型类型5.05.0,然后再求和,得到的结果为,然后再求和,得到的结果为floatfloat 类型类型12.512.5。 2.C#2.C#中运算符的结合性为:二元运算符(除赋值运算符外)都是左结合,中运算符的结合性为:二元运算符(除赋值运算符外)都是左结合, 即运算按照从左到右的顺序执行;赋值运算符和条件运算符是右结合即运算按照从左到右的顺序执行;赋值运算符和条件运算符是右结合 ,即运算按照从右到左的顺序执行。例如,即运算按照从右到左的顺序执行。例如,x=y=zx=y=z按照按照x=(y=z)x=(y=z)进进 行求值。行求值。 3.3.对包含多种运算符的表达式进行求值时,如果有括号,先计算括号里面对包含多种运算符的表达式进行求值时,如果有括号,先计算括号里面 的表达式,然后按运算符的优先级别和结合性确定计算的先后顺序。的表达式,然后按运算符的优先级别和结合性确定计算的先后顺序。 先执行优先级别高的运算符,然后执行优先级别低的运算符。比如第先执行优先级别高的运算符,然后执行优先级别低的运算符。比如第 1010行代码,求表达式行代码,求表达式sizeof(int)*10/6.0sizeof(int)*10/6.0时,时, sizeofsizeof算符的优先级算符的优先级 别最高,所以先计算别最高,所以先计算sizeof(int),sizeof(int),然后执行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语四级模拟试题及答案
- 环保公司安全培训试题及答案
- 不锈钢真空容器制作工协同作业考核试卷及答案
- 太阳能利用工基础知识考核试卷及答案
- 电线电缆绞制工数字化技能考核试卷及答案
- 2025年放射医师中级(344)真题考点及答案(网友回忆版)
- 纺织纤维梳理工培训考核试卷及答案
- 村集体烤烟房建设合同书7篇
- 2025年7月医疗废物管理培训考核试题及答案
- 眼镜定配工岗位操作技能考核试卷及答案
- 应用技术推广中心 报告1212
- 理财规划大赛优秀作品范例(一)
- 一级烟草专卖管理师理论考试题库(含答案)
- 小学数学《分数除法》50道应用题包含答案
- 教学第七章-无机材料的介电性能课件
- 应急值班值守管理制度
- 外国文学史-总课件
- 《中小企业划型标准规定》补充说明
- 房屋租赁信息登记表
- 六年级上册数学课件-1.6 长方体和正方体的体积计算丨苏教版 (共15张PPT)
- 小学生汉字听写大赛题库
评论
0/150
提交评论