C#第4章:运算符和表达式.ppt_第1页
C#第4章:运算符和表达式.ppt_第2页
C#第4章:运算符和表达式.ppt_第3页
C#第4章:运算符和表达式.ppt_第4页
C#第4章:运算符和表达式.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 运算符和表达式,表达式由操作数 (operand) 和运算符 (operator) 构成,运算符指示对操作数进行什么样的运算。,运算符按所要操作的操作数的数目来分类,又可分为以下3类。 (1) 一元运算符:一元运算符带1个操作数并使用前缀表示法(如x)或后缀表示法(如 x+)。 (2) 二元运算符:二元运算符带2个操作数并且全都使用中缀表示法(如 x + y)。 (3) 三元运算符:只有一个三元运算符?:,它带3个操作数并使用中缀表示法 (c? x: y)。,4.1 算术运算符,4.1.1 基本算术运算符,1. + :加法运算符或正值运算符 2. - :减法运算符或负值运算符 3. * :乘法运算符 4. / :除法运算符 除法运算符用于进行除法运算,如5/6。需要注意的是如果除数和被除数都为整数,则结果也为整数,它会把小数舍去(并非四舍五入) 。 5. % :模运算符 模运算符用于计算第2个操作数除第1个操作数后的余数。在C#中,所有数值类型都具有预定义的模数运算符。如: 5 % 2 的结果为 1 -5 % 2 的结果为 -1 5.0 % 2.2 的结果为 0.6,结果为double值 5.0m % 2.2m 的结果为 0.6,结果为decimal值。,4.1 算术运算符,4.1.2 递增、递减运算符,递增(+)、递减(-)运算符是一元运算符,它们的作用是使变量的值增加1或减少1。 无论+i和i+都相当于执行i = i + 1,但执行的顺序会有所不同。 例:a=2;b=a+ 和 a=2;b=+a 结果分别为: a=3; a=3; b=2 b=3,4.1 算术运算符,4.1.3 位移运算符,1. 左移运算符 左移运算符是一个二元运算符,用于位运算,作用是将第1个操作数向左移动第2个操作数指定的位数。第2个操作数的类型必须是int。 注:C#中规定:如果第1个操作数是int或uint(32位),则移位数由第2个操作数的低5位给出。如果第1个操作数是long或ulong(64位),则移位数由第2个操作数的低6位给出。 例:把32位整数65左移33位后的结果为( ) 答案:130,2. 右移运算符 右移运算符和左移运算符类似,它的作用是将第1个操作数向右移动第2个操作数所指定的位数。第2个操作数的类型必须是int。 注:C#中规定,在对有符号整数int和long进行右移运算时,如果数字为正数,则高位填充0,如果数字为负数,则高位填充1。 例 int a = 45; int b = a 1; Console.WriteLine(b); 答案:22,4.1.3 位移运算符,4.1 算术运算符,4.2 逻辑运算符,1. &:逻辑与(逻辑AND)运算符,逻辑与运算符可以用于整型和布尔型数值。对于整型操作数,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”。,4.2 逻辑运算符,1. &:逻辑与(逻辑AND)运算符,(1) 当操作数为bool值时,当且仅当2个操作数均为true时,结果才为true。 true & true 的结果为true true & false 的结果为false false & false 的结果为false (2) 当操作数为整型时,则进行位运算,如: 100 & 45的结果为36。,4.2 逻辑运算符,2. |:逻辑或(逻辑OR)运算符,| 逻辑或运算符可以用于整型和布尔型数值。对于整型操作数,| 计算操作数的逻辑按位“或”。对于 bool 操作数,| 计算操作数的逻辑“或”。,4.2 逻辑运算符,2. |:逻辑或(逻辑OR)运算符,(1) 当操作数为bool值时,当且仅当2个操作数均为false时,结果才为false,或者说只要有1个操作数为true,结果就为true。 true & true 的结果为true true & false 的结果为true false & false 的结果为false (2) 当操作数为整型时,则进行位运算,如: 100 | 45的结果为109,4.2 逻辑运算符,3. :逻辑异或(逻辑XOR)运算符, 逻辑异或运算符可用于整型和bool型数值。对于整型, 将计算操作数的按位“异或”。对于bool操作数, 将计算操作数的逻辑“异或”。,4.2 逻辑运算符,3. :逻辑异或(逻辑XOR)运算符,(1) 当操作数为bool值时,当且仅当只有一个操作数为true时,结果才为true。或者说2个操作数相同时结果为false,2个操作数不同时结果为true。 true true 的结果为false true false 的结果为true false false 的结果为false (2) 当操作数为整型时,则进行位运算,如: 100 45的结果为73。,4.2 逻辑运算符,4. !:逻辑非(逻辑NOT)运算符,!逻辑非运算符只能用于bool型数值,它是对操作数求反的一元运算符。当操作数为 false时返回true。当操作数为true时,返回false。 !false的结果为true !true的结果为false,4.2 逻辑运算符,5. :逻辑非(逻辑NOT)运算符,求补运算符和!逻辑非运算符功能相似,可以视为是!逻辑非运算符的整型版。求补运算符只能用于整型数值,它对操作数执行按位求补运算,其效果相当于反转每一位。 求补运算符经常用于设置整数中某个位的值为0。,4.2 逻辑运算符,6. &:条件与(条件AND)运算符,&条件与运算符只能用于bool型数值,它与 & 运算符的功能完全一样,执行其 bool 操作数的逻辑“与”运算。 true & true 的结果为true true & false 的结果为false false & false 的结果为false & 运算符与 & 运算符的区别在于,& 运算符不能对整型进行计算。另外,对于 x & y 如果 x 为 false,则不计算 y(因为不论 y 为何值,“与”操作的结果都为 false)。这被称为“短路”计算。也就是说使用 & 运算符进行条件计算,比使用 & 运算符速度更快些。,4.2 逻辑运算符,7. |:条件或(条件OR)运算符,| 运算符和 & 运算符一样,只能用于bool型数值,它与 | 运算符的功能完全一样,执行其 bool 操作数的逻辑“或”运算。 true | true 的结果为true true | false 的结果为true false | false 的结果为false | 运算符与 | 运算符的区别在于,| 运算符不能对整型进行计算。另外它也会进行“短路”计算,即对于x & y,如果 x 为 true,则不计算 y(因为不论 y 为何值,“或”操作的结果都为 true)。,4.3 赋值运算符和表达式,4.3.1 复合赋值运算符,一方面,为了简化程序,使程序看上去精练;另一方面,为了提高编译效率,C#允许使用复合赋值运算符。在赋值运算符前面加上其他运算符,就可以构成复合赋值运算符。如果在 = 前加一个 + 运算符,就成为复合赋值运算符 +=。 例如,可以有: a += 10 等价于 a = a + 10 x *= y + 6 等价于 x = x * (y + 6) x %= 5 等价于 x = x % 5,4.3 赋值运算符和表达式,4.3.1 复合赋值运算符,(1) a+=b (其中a为变量,b为表达式) (2) a+= b (将有下画线的 a+ 移到 = 号右侧) (3) a=a+b (在 = 号左侧补上变量名),4.3 赋值运算符和表达式,4.3.1 复合赋值运算符,4.3 赋值运算符和表达式,4.3.2 赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。它的一般形式为: ,4.4 关系运算符和关系表达式,“关系运算”实际上是“比较运算”,将两个值进行比较,判断比较的结果是否符合给定的条件。例如,x 5是一个关系表达式,大于号“”是一个关系运算符,如果x的值为6,则满足给定的x 5的条件,因此关系表达式的值为“真”(true);如果a的值为3,不满足x 5的条件,则称关系表达式的值为“假”(false)。,4.4 关系运算符和关系表达式,4.4.1 关系运算符,C#语言规定可以使用以下6种关系运算符。 (1) = 等于 (2) != 不等于 (3) 大于 (5) = 大于或等于,4.4 关系运算符和关系表达式,4.4.2 关系表达式,用关系运算符将2个表达式连接起来的式子,称为关系表达式。例如: a 3 a * b = c + d (a = 6) (b = 7) a!= b a 3 关系表达式的值是一个bool值(或者说关系表达式返回一个bool值),即true或false。 例如,关系表达式 6 = 2 的值为false 6 = 0 的值为true,4.5 字符和字符串运算符,由于字符可以隐式转换为整型(字符的Unicode编码值),很多时候,字符会被当做一个整型数值来处理。比如: a+ 6 的结果为 103,字符a被隐式转换为97,再与103相加 a* b 的结果为 9506,相当于 97*98 a b 的结果为 false,4.5 字符和字符串运算符,在C#中,加法运算符(+)又可以作为字符串串联运算符,在字符串运算中,它起到了连接字符串的作用。 “a“+ “b“ 的结果为 “ab“ “早上“ + “好! “ 的结果为 “早上好!“ 字符在跟字符串进行加法运算时,也会被转换为字符串进行处理,例如: a+“bcdef“ 的结果为 “abcdef“,由于 “+“ 运算符可以用于字符串操作,所以 a 首先被隐式转换为字符串 “a“,再与字符串 “abcdef“ 进行连接操作。,4.6 其他运算符,1.点运算符,点运算符用于成员访问。点运算符指定类型或命名空间的成员。 txtName.Text = “张三“; /让文本框内显示“张三”这两个字 string str = txtName.Text; /把Text属性的值赋给字符串变量str,4.6 其他运算符,2.索引运算符,索引运算符 用于数组、索引器,表示按 内指定的索引去访问数组或索引器中的相应元素的内容。,4.6 其他运算符,3.转换运算符,转换运算符 ( ) 除了用于指定表达式中的运算顺序外,圆括号还用于指定强制转换或类型转换,例如: x + (y + z) 把y + z用圆括号括起来表示先执行y + z。 (int)12.3 表示把Double类型的值12.3强制转换为整型,结果为12。 (char)97 表示把整数值97强制转换为字符类型,结果为 a。,4.6 其他运算符,4.条件运算符,条件运算符 ?: 根据布尔型表达式的值返回两个值中的一个。条件运算符要求有3个操作对象,它是C#中唯一的一个三元运算符,格式如右。,条件 ? 表达式1 :表达式2,false,true,4.7 运算符优先级,当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序。例如,表达式 x + y * z 按 x + (y * z) 计算,显然 * 运算符的优先级比 + 运算符高。,高,4.7 运算符优先级,高,4.7 运算符优先级,4.7.1 算术运算符优先级,自学,不做要求。,4.7 运算符优先级,4.7.2 关系运算符优先级,关系运算符的优先级总结出如下几点。 (1) (,=)这4种关系运算符优先级相同,而(=,!=)这2种关系运算符的优先级相同。前4种高于后2种。 (2) 关系运算符的优先级低于算术运算符。 (3) 关系运算符的优先级高于赋值运算符。,4.7 运算符优先级,4.7.2 关系运算符优先级,a b + c 等效于 a (b + c) a + b != a * b 等效于 (a + b) != (a * b) a = b c 等效于 a = (b c) (a必须为一个bool值) a = b c 等效于 a = (b c) (a必须为一个bool值),4.7 运算符优先级,4.7.3 逻辑表达式和运算符优先级,用逻辑运算符将关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论