您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页3、运算符

3、运算符

来源:步遥情感网


五、运算符

运算符在表达式中用于描述涉及一个或多个操作数的运算,它指明了进行运算的类型。在C#中,根据运算符所使用的操作数的个数,可以分为如下3类:

•一元运算符(单目运算符):只使用一个操作数,如:++ •二元运算符(双目运算符):使用两个操作数,如:+ •三元运算符(三目运算符):使用三个操作数,如:?:

根据运算符执行的操作类型主要可分为如下几类:

•算术运算符 •赋值运算符 •关系运算符 •逻辑运算符 •条件运算符

使用运算符的注意事项: 1)、了解要使用的运算符的功能。 2)、运算结果的类型。

如:整数/整数=整数 小数/小数=小数或整数 小数/整数=小数 整数/小数=小数或整数 3)、优先级和结合性。

开发人员常常会创建表达式来执行多次计算或比较。在这种情况下,编译器就

会根据默认的运算符优先级来控制表达式求值的顺序。若想要以不同于默认的优先级顺序进行操作,可以使用圆括号明确地告知编译器,这样不仅可以明确求值的顺序,还可以使表达式更具有可读性,而多余的圆括号将由编译器删除,在任何情况下它们都不会减慢应用程序运行的速度。

优先级分为左结合、右结合,也就是从左还是从右开始进行计算。赋值运算符和条件运算符是右结合的,其它的都是左结合。

优先级顺序如下:

()

算术运算符: x++ x--

++x --x * / % + -

关系运算符: < > <= >=

== !=

逻辑运算符: &&

||

三目运算符: ?:

赋值运算符: = *= /= += -=

,

1、算术运算符

算术运算符是进行算术运算的操作符,它实现了数学上基本的算术运算功能,这些运算符包括:加法运算符、减法运算符、乘法运算符、除法运算符、取模运算符。

1)、加法运算符:

(1)、包括:+、++。

(2)、当操作数的类型不同时,C#编译器将先应用类型转换规则,从而确保操作以可预测的方式执行:

double a = 5 + 5.5;

(3)、++有两种形式,一种是前缀方式,一种是后缀方式。前缀方式是先进行加法运算然后赋值;后缀方式是先赋值再进行加法运算。

例1:

int a; a = 5; a++; int b; b = 6; ++b;

Console.WriteLine(\"a={0},b={1}\", a, b); Console.ReadLine();

其实a++、++b就是相当于a=a+1、 b=b+1。结果为6、7。

例2:

int a; a = 5;

int b = a++;

Console.WriteLine(\"a={0},b={1},\", a, b); a = 5; int c = ++a;

Console.WriteLine(\"a={0},c={1},\", a,c); Console.ReadLine();

这种计算方式也可以称其为临近原则:a离b =近,就把a值先赋给b,再++,也就是先赋值再操作;而a离++近,就把a值先++,再赋值给c,也就是操作完成之后再赋值。前缀方式是先进行加法运算然后赋值;后缀方式是先赋值再进行加法运算。结果为6、5和6、6。

例3:

int a, b; a = 3;

b = (++a) + (++a) + (++a);

Console.WriteLine(\"a={0},b={1}\", a, b); int x, y; x = 3;

y = (x++) + (x++) + (x++);

Console.WriteLine(\"x={0},y={1}\",x, y); Console.ReadLine();

可以这么理解:b=b1+b2+b3: b1=++a、 b2=++a、 b3=++a y=y1+y2+y3: y1=x++、 y2=x++、 y3=x++ 所以结果是6、15和6、12。

2)、减法运算符:-、--,它的使用同加法运算符。

3)、乘法运算符:*不可以省略,如2a是错误的,应写为2*a。 4)、除法运算符:/

double a, b; int c; a = 7; b = a / 3; c = 5 / 3;

Console.WriteLine(\"a={0},b={1},c={2}\", a,b,c); Console.ReadLine();

可以看到如果两个数都是整数,会把结果去尾取整,返回整数,不会四舍五入的。

5)、取模运算符:%

%:是mod,所以叫取模, 也叫作取余运算符。是指返回除法运算的余数。

double a, b,c,d,e,f,g,h; a = 7 % 5; b = -7 % 5; c = 7 % -5; d = -7 % -5; e = 5 % 7; f = -5 % 7; g = 5 % -7; h = -5 % -7;

Console.WriteLine(\"a={0},b={1},c={2},d={3},e={4},f={5},g={6},h={7}\", a, b, c,d,e,f,g,h); Console.ReadLine();

可以看到,余数的符号与被除数的符号是相同的。

一般都把%用于确定数值是否能被整除,如判断是否是润年等。

2、赋值运算符:

1)、赋值就是给一个变量赋一个新值,所有的赋值操作要服从类型转换规则。

包括:= += -= *= /= %= <<= >>= 等。

2)、在赋值的左操作数必须是一个变量、属性访问器,不可以是常量或是表达式。

这是因为赋值运算符是右结合,是把右边的值赋给左边的操作数。

如:3=a a+b=5都是错误的。

这是因为常量在整个程序运行过程中是不许变化的;而变量a和变量b在声明的时候在内存中已经开辟了一个空间,而a+b是没有内存空间的,而且a+b也没法进行声明。

同理,5++、(a+b)++也都是错的。

3)、在C#中可以对变量进行连续的赋值,这时赋值操作符是右关联的,也就是从

右向左将操作符分组,如:a=b=c的表达式等价于 a=(b=c)。 4)、复合赋值:

将运算和赋值操作结合起来的运算称为复合赋值。如:a+=3其实就是a=a+3,

b*=c+9 其实就是b=b*(c+9),因为它是右结合性的,所以c+9优先级大,是

把c+9的值赋给左边的b*,所以要加上()。 int a, b,c,d;

a=2; a+=3; b=2; b%=3; c=2; d = 2;

d*=c+4;

Console.WriteLine(\"a={0},b={1},c={2},d={3}\", a, b, c,d); Console.ReadLine();

5)、左移、右移赋值:

<<= >>= 分别代表左移和右移赋值。指的是根据表达式值所规定的位

数把变量值的二进制数进行左移或右移。

int a; a = 2; a <<= 3;

Console.WriteLine(a); Console.ReadLine();

把a的值2转换为二进制数:10,向左移动3位,则为10000,所以为16。

3、关系运算符:

关系运算用来比较两个对象并返回布尔值,它的返回值总是布尔值。C#中关系操作符主要包括:比较运算符、is运算符、as运算符。

1)、比较运算符:

包括:> >= < <= == != 等。

2)、在比较运算符的左边只要有一个满足右边的条件就成立。 如:3>=2 、2>=2 、2==2都是成立的,都为true。

可以理解为x>=2成立,当x=3时,当x=2时,所以都成立。

3)、在关系运算符中,2==2是成立的,而2=2是错误的,因为这是赋值,不是一

个关系,不是一个条件,关系表达式运算结果只有:true 和false。

例:

int a,b;

a = Convert.ToInt32(Console.ReadLine()); b = Convert.ToInt32(Console.ReadLine()); if (a == b)

Console.WriteLine(a); else

Console.WriteLine(b); Console.ReadLine();

4、逻辑运算符:

1)、包括:!(非,取反)、&&(与,并且)、||(或,或者)。

2)、 如: 10当然,true是一个布尔类型的逻辑值,不能参与运算。 应写为:103)、逻辑运算符和布尔型操作数一起组成了逻辑表达式,当操作数为不同的组合

时,逻辑运算符的运算结果可以用逻辑运算的真值来表示:

5、条件运算符:

?:运算符称为条件运算符,它就是三目运算符。格式为: 表达式1 ? 表达式2 : 表达式3

指的是:先判断表达式1的值,如果为真,那么表达式2的值就是整个表达式的值;如果表达式1的值是假,那么表达式3的值是整个表达式的值。

例:

int a, b,c;

a = Convert.ToInt32(Console.ReadLine()); b = Convert.ToInt32(Console.ReadLine()); c = a > b ? a : b;

Console.WriteLine(\"a={0},b={1},c={2}\", a, b, c); Console.ReadLine();

可以理解为这是在求a,b当中的最大值。

6、逗号:

在整个优先级当中是最小的。逗号是从左向右一个个计算的。如: 表达式1,表达式2……表达式n,是先求表达式的值,再应用逗号。 例:(x=5 , x+3 , x=x+2)

最后x的值为7,因为x+3没有经过赋值,只有x=x+2是经过了赋值。整

个表达式的值是最后一个表达式的值,也就是7。

7、特殊运算符:

1)、new运算符:

可以用于创建对象和调用构造方法,创建对象的时候需要用的是

符来为这个对象分配内存空间。 如:

dog dog1=new dog ();

new

运算

这里是在利用类dog定义一个对象dog1。

A a1 = new A();

这是在调用默认的构造函数。a1的初始值为0,这是int类型的默认值,所以这句话等同于:int a1 = 0;。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务