当前位置:文档之家› 第3章 语句、表达式、运算符

第3章 语句、表达式、运算符


y
16.0
分析程序
int x = 20; x = x + 10; Console.WriteLine(x);
这样行不行??
在数学上,x=x+10 是一个不可能成立的式子 在C#中,x=x+10; 却是常见的赋值表达式
运行结果: 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.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
• 【例3.4】赋值运算符=、+=、-=、*=、/=、%= 、&=、|=、^=、<<=、>>=等示例
简单赋值表达式
y=3.0*4.0;
一般格式: 变量 = 表达式; double x, y; x=4.0; y=x*x; Console.WriteLine(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);
• 由花括号({ 和 })括起来的一系列语 句构成代码块(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
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
注意: (1)算术运算符两边的操作应是数值型。若是字符型,则自 动转换成字符所对应的ASCII码值后再进行运算 (2)增量运算符(++、--)可以出现在操作数之前 (++variable、 --variable )或之后(variable++ 、 variable -- ) 【例3.2】算术运算符++、--、一元+、一元-、二元+、二元-、 *、/、%等示例
3.2 运算符
• C#运算符(operator)是术语或符号,用于在 表达式中对一个或多个称为操作数的进行计算 并返回结果值。接受一个操作数的运算符被称作一
元运算符,例如增量运算符(++)或new。接受两个 操作数的运算符被称作二元运算符,例如算术运算符+ 、-、*、/。接受三个操作数的运算符被称作三元运算 符,条件运算符“?:”是C#中唯一的三元运算符 • 当表达式包含多个运算符时,运算符的优先级控制各 运算符的计算顺序 • 通过运算符重载(overload)(具体可参见7.6节)可以 为用户自定义的类型定义新的运算符
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);
注 • • •


意: 关系运算符的优先级相同。 对于两个预定义的数值类型,关系运算符按照操作数的数值大小进行比较。 对于string类型,关系运算符比较字符串的值,即按字符的ASCII码值从左到右一 一比较:首先比较两个字符串的第一个字符,其ASCII码值大的字符串大,若第一 个字符相等,则继续比较第二个字符,依此类推,直至出现不同的字符为止。 对于string以外的引用类型,如果两个操作数引用同一个对象,则==返回True。如 果两个操作数引用不同的对象,则!=返回True。 int 和System.Int32是相同的数据类型
相关主题