第3章 语句、表达式、运算符
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.2 关系和类型测试运算符
运算符 == != > >= < <= x is T x as T 实例 "ABCDEF" == "ABCD" 相等 "ABCD" != "abcd" 不等 "ABC" > "ABD" 大于 123 >= 23 大于等于 小于 "ABC" < "上海" "123" <= "23" 小于等于 数据x是否属于类 myArray is int myArray is int[] 型T 返回转换为类型T myArray as int[] 的x,如果x不是T myArray as object 则返回null 含义 结果 False True False False True True False True System.Int32[] System.Int32[]
“-”与“+”只能放在操作数的左边 。 增量与减 量运算符只能用于变量。
x=x+1 这是一个极为常见的赋值表达式, 叫“计数器” x可以是其它变量 ++x == == 与x=x+1功能相同 与++x相似,但不完全相同 区别在哪里呢??
x++
++x 与 x++比较
int x=10; ++x; Console.WriteLine(x) ; int x=10; x++; Console.WriteLine(x);
运行结果: 16.0
简单赋值表达式
赋值表达式并非数学上的 恒等式!!
试一试: 这段程序输出什么?
double x, y; x=4.0; y=x*x; x=5.0; Console.WriteLine(y);
16.0 25.0
√
×
简单赋值表达式
内存
程序运行分析:
x
4.0 5.0 16.0
double x, y; x=4.0; y=x*x; x=5.0; Console.WriteLine(y);
源自文库 3.2.4 赋值运算
• (1)简单赋值语句:变量名 = 表达式; • (2)复合赋值语句
运算符 += -= *= /= %= <<= >>= &= |= ^= 含义 加法赋值 减法赋值 乘法赋值 除法赋值 取模赋值 左移赋值 右移赋值 与赋值 或赋值 异或赋值 举例 sum += item count +=1 x *= y+5 x /= y-z x %= 2 x << = y x >> = y x &= 5>3 x |= true x ^= y 等效于 sum = sum + item count = count + 1 x = x * (y+5) x = x / (y-z) x=x%2 x = x << y x = x >> y x = x & (5>3) x = x | true x=x^y
调用函数的时候,必须将参数使用()括起来
例:海伦公式:
已知三角形的三边:a,b,c,计算面积
s S abc 2 s ( s a )( s b )( s c )
如果 a=10, b=12, c=15,编 程求三角形面积
变量必须先定义,后使用
double a,b,c; a=10; s, S是两个不同的变量 b=12; c=15; 开平方的计算 double s, S; s=(a+b+c)/2; S=Math.Sqrt(s*(s-a)*(s-b)*(s-c)); Console.WriteLine("S={0}", S);
y
16.0
分析程序
int x = 20; x = x + 10; Console.WriteLine(x);
这样行不行??
在数学上,x=x+10 是一个不可能成立的式子 在C#中,x=x+10; 却是常见的赋值表达式
11
练习
int a; a = 2; ++a; Console.WriteLine( a); Console.WriteLine(++a); Console.WriteLine(a++);
二元运算符的意义与数学意义相同,包括: +
(加)、-(减)、*(乘)、/(除)、%(求余/求模)。
其中%(求余)运算符是以除法的余数作为运算 结果,求余运算也叫求模。 例如: int x=6,y=2,z; z=x%y; // x除以y的结果不是3(商),而是0(余数) 要注意数据类型。 例如: int a,b=39; a=b/2; // a的值为18
注 • • •
•
•
意: 关系运算符的优先级相同。 对于两个预定义的数值类型,关系运算符按照操作数的数值大小进行比较。 对于string类型,关系运算符比较字符串的值,即按字符的ASCII码值从左到右一 一比较:首先比较两个字符串的第一个字符,其ASCII码值大的字符串大,若第一 个字符相等,则继续比较第二个字符,依此类推,直至出现不同的字符为止。 对于string以外的引用类型,如果两个操作数引用同一个对象,则==返回True。如 果两个操作数引用不同的对象,则!=返回True。 int 和System.Int32是相同的数据类型
3.2 运算符
• C#运算符(operator)是术语或符号,用于在 表达式中对一个或多个称为操作数的进行计算 并返回结果值。接受一个操作数的运算符被称作一
元运算符,例如增量运算符(++)或new。接受两个 操作数的运算符被称作二元运算符,例如算术运算符+ 、-、*、/。接受三个操作数的运算符被称作三元运算 符,条件运算符“?:”是C#中唯一的三元运算符 • 当表达式包含多个运算符时,运算符的优先级控制各 运算符的计算顺序 • 通过运算符重载(overload)(具体可参见7.6节)可以 为用户自定义的类型定义新的运算符
• 【例3.4】赋值运算符=、+=、-=、*=、/=、%= 、&=、|=、^=、<<=、>>=等示例
简单赋值表达式
y=3.0*4.0;
一般格式: 变量 = 表达式; double x, y; x=4.0; y=x*x; Console.WriteLine(y);
计算出等号右边表达式的值,并 存放到左边的变量中
^
逻辑异或
|
逻辑或
&&
条件与
||
条件或 • 【例3.3】逻辑运算符!、&、&&、|、||、 ^等示例
关系逻辑运算符示例
• • • • 例如: bool b1= !true; // b1的值为false bool b2= 5>3&&1>2; // b2的值为false bool b3= 5>3||1>2 // b3的值为true
第3章 语句、运算符和表达式
•C#语言语句、运算符和表达式的基本概念 •算术运算符 •关系和类型测试运算符 •逻辑运算符 •赋值运算 •字符串运算符 •位运算符 •条件运算符 •运算符优先级 •表达式的组成和书写规则
3.1 语句(1)
• 语句(statement)是C# 程序的过程构造 块,用于声明变量和常量、创建对象、 变量赋值、调用方法、控制分支、创建 循环等。语句通常以分号终止。
运行结果
11
这里没有看到什么不同? 运行结果 11
++x 与 x++比较
int x=10; Console.WriteLine(++x ); Console.WriteLine (x);
++x的运算结果是自增之后的!!!
运行结果
11
11
int x=10; Console.WriteLine(x++); x++的运算结果是自增之前的!!! 10 Console.WriteLine(x); 运行结果
练习
Console.WriteLine(19-77);
-58
19 / 7 结果是 ? 21 % 9 结果是 ? 2 3
一些不能直接写的表达式
• 乘方、开方如何计算?没有乘方、 开方符号
• 需要调用Math类中的数学函数 5.0*5.0 // 计算平方 Math.Pow(5.0, 2) // 计算乘方 Math.Sqrt(5.0) // 计算开平方 Math.Log(5.0) // 计算自然对数 Math.Log10(5.0) // 计算常用对数 • C#语言可以直接调用 .net 中包含的众多类库, 可以完成很多功能
3.2.1 算术运算符
运算符 ++ -+ * / % + 含义 增量 减量 一元+ 一元乘法 除法 模数 加法 减法 说明 操作数加 1 操作数减 1 操作数的值 操作数的反数 操作数的积 第二个操作数除第一个操作数 第二个操作数除第一个操作数后的余 数 两个操作数之和 从第一个操作数中减去第二个操作数 优先级 1 1 2 2 3 3 3 4 4 实例 ++num, num++ --num,num-+num -num num*num*2 10 / num 10.0 / num 10 % num 8 % 2.2 10 + num 10 - num 结果 9 7 8 -8 128 1 1.25 2 1.4 18 2
注意: (1)算术运算符两边的操作应是数值型。若是字符型,则自 动转换成字符所对应的ASCII码值后再进行运算 (2)增量运算符(++、--)可以出现在操作数之前 (++variable、 --variable )或之后(variable++ 、 variable -- ) 【例3.2】算术运算符++、--、一元+、一元-、二元+、二元-、 *、/、%等示例
• 由花括号({ 和 })括起来的一系列语 句构成代码块(block)
3.1 语句(2)
• 声明语句(declaration statement)用于声明局部变量和常量 • 表达式语句(expression statement)用于对表达式求值。可用作语 句的表达式包括方法调用、使用 new 运算符的对象分配、使用 = 和复合赋值运算符的赋值,以及使用 ++ 和 -- 运算符的增量和减 量运算 • 选择语句(selection statement)用于根据表达式的值从若干个给 定的语句中选择一个来执行。这一组语句有 if 和 switch 语句 • 迭代/循环语句(iteration statement)用于重复执行嵌入语句。这 一组语句有 while、do、for 和 foreach 语句 • 跳转语句(jump statement)用于转移控制。这一组语句有 break 、continue、goto、return、和throw语句等 • try...catch 语句用于捕获在块的执行期间发生的异常,try...finally 语句用于指定终止代码,不管是否发生异常,该代码都始终要执 行 • using 语句用于获得一个资源,执行一个语句,然后释放该资源 • 【例3.1】C#语句示例:声明语句、控制语句、赋值语句、循环语 句、调用静态方法、调用对象方法等
3.2.3 逻辑运算符
运算符 ! & 含义 逻辑非 逻辑与 说明 优先级 实例 !True 当操作数为False时返回True; 1 !False 当操作数为True时返回False True & True 两个操作数均为True时,结果 2 True & False 才为True,否则为False False & True False & False True ^ True 两个操作数不相同,即一个为 3 True ^ False True一个为False时,结果才为 False ^ True True,否则为False False ^ False 4 True | True 两个操作数中有一个为True时, True | False 结果即为True,否则为False False | True False | False True && True 两个操作数均为True时,结果 5 True && False 才为 True。但仅在必要时才计 False && True 算第二个操作数 False && False 6 True || True 两个操作数中有一个为True时, True || False 结果即为True。但仅在必要时 False || True 才计算第二个操作数 False || False 结果 False True True False False False False True True False True True True False True False False False True True True False