C#的运算符有三种:一元运算,二元运算和三元运算。所谓二元运算就是参加运算的变量有两个,其他两种类推。
一. 数学运算
一元的包括:+,-,++和--。
如:int x=10; int x1=+x;int x2=-x;那么x1=10;x2=-10.
这两个运算比较简单。二元运算:加、减、乘,除,取余、,对应的符号是+,-,*,/和%;其中前面4个我不想多说,小学就学过,基本上是:变量1=变量2(加减乘除)变量3的模式;主要学习取余运算。例如:x=42%10;结果x=2,其实取余运算和数学上是取模的原理是一样的,就是第一个数字除以第二个数字得到的余数。int y=81%9;那么y=0;这样的运算在小学就回,这里提问的方法不一样。
另外加号+在字符串中的可以当作两个字符串合并。请看下面的例子:
string str1 = "hello";
string str2 = "你好";
string str3 = str1 + str2;
Console.WriteLine("str1={0}",str1);
Console.WriteLine("str2={0}",str2);
Console.WriteLine("str3=str1+str2:{0}",str3);
Console.ReadKey();程序的其他部分省了。
其输出结果是:
str1=hello
str2=你好
str3=str1+str2:hello你好
自增和自减运算:++,--
这两个运算在后面的循环中有很大的作用,++的作用是自己的值+1,--就是自减1.但在赋值运算的过程 int a=10;
那么:int b=++a;int c=a++;结果b和c是不相等的。
int a = 10;
int a1=a;
int b = ++a;
int c = a++;
Console.WriteLine("a原来的值a1{0}",a1);
Console.WriteLine("a后来的值{0}", a);
Console.WriteLine("b=++a{0}", b);
Console.WriteLine("c=a++{0}", c);
输出的结果是:
a原来的值a1:10
a后来的值11
b=++a:11
c=a++:10
解释:在b=++a这里,先是a自加+再赋给b;同时用 a1=a;来保存a原来的值。
此后经过a=a1;a的值又变成10;c=a++;这里a先将值赋给c再自增1.
同样++运算也是一样的。总之,如果++或者—在前面,那么就是先自增或者自减,再赋值,如果++和—在后面则是先赋值再自增自减。
二. 赋值运算符号
主要运算包括:=(赋值),+=,-=,*=,/=,%=。
赋值=运算很简单,基本是把两个类型一样的变量的一个的值赋给另一个。
int x = 0; int y; y = x;剩下的四个运算原理都是一样的,如下面的例题所示:
int x1, x2, x3;
x1 = 11; x2 = 12; x3 = x1;
x1 += x2;//x1=x1+x2;
x2 -= x3;//x2=x2-x3;和x2=x2-x1;一样
Console.WriteLine("x1原来的值是{0}",x3);
Console.WriteLine("x1+=x2后x1的值{0}",x1);
Console.WriteLine("x2-=x1后x2的值{0}",x2);
Console.ReadKey();
结果是:
x1原来的值是11
x1+=x2后x1的值23
x2-=x1后x2的值1
再看*=;
int x1, x2, x3;
x1 = 11; x2 = 33; x3 = x1;
x1 *= x2;//x1=x1*x2;
x2 /= x3;//x2=x2/x3;和x2=x2-x1;一样
Console.WriteLine("x1原来的值是{0}",x3);
Console.WriteLine("x1*=x2后x1的值{0}",x1);
Console.WriteLine("x2/=x1后x2的值{0}",x2);
输出的结果是:
x1原来的值是11
x1*=x2后x1的值363
x2/=x1后x2的值3
剩下的结果请读者自己编程体会。
这里要说明的一个地方是:Console.WriteLine("x1*=x2后x1的值{0}",x1);中的{0},这个是使用指定的格式输出,请看:
Console.WriteLine("x1的值是{0},x2的值是{1},x3的值是{2} ",x1,x2,x3);结果是:
x1的值是363,x2的值是3,x3的值是11
三. 布尔逻辑运算
我们知道bool 类型的变量只有俩个值,true和false;在数学上表示1和0。很多时候要判断当某个条件是否成立才能继续执行,这样就是条件表达式为真-true;
布尔运算符主要有:==(等于),!=(不等),>=(大于等于),<=(小于等于),>(大于),<(小于)。运算示范如下:
变量运算 | == | != | >= | <= | > | < |
Var1=10 Var2=16 | false | true | false | true | false | true |
bool flag; flag=(var1==var2);以上面的数据来算,flag=false;其他的一次类推、在运算过程中,可以现定义bool类型的变量,也可以直接实用,要看情况而定。同时要注意运算符两边的变量类型要一致。
四、下面介绍几个逻辑运算:&,|,!,^,&&,||.
介绍下:&是与运算,|是或运算,!是非,^异或运算。
它们的运算法则如下所示:
&运算法则如下所示:var3=var1&var2
bool var1 | var2 | var3 |
true | true | ture |
True | False | False |
False | Ture | False |
False | False | false |
|,或运算法则如下表:
bool var1 | var2 | var3 |
true | true | ture |
true | false | true |
False | Ture | true |
False | False | false |
!,取非运算,这个更简单,true的!就是false,false的!ture;
bool var1,var2;var1=true;var2=!var1;那么var2就等于false;
^,异或运算的原理也比较简单,两个变量只要它们的值是一样的,它们取异或的结果就是false,若一个false,一个true,那么它们异或的结果就是true;
同时介绍下在循环条件等情况下很常见的&&,||运算。这两个与&,|的运算法则是一样的,前面的两个运算性能较好,&&运算中只要第一个变量是false,其结果就是false,后面的不用管了,同理,||运算只要第一个变量是true,那么其结果就是true,这与&和|不一样,后两个运算要所有运算变量都经过运算。本文发表于编程入门网:www.bianceng.cn
五、位的运算符
位的逻辑运算符包括:与&,或|,异或^和非!
与的运算是:将两个操作数的二进制位对应位进行与运算
例如:int p1=10;int p2=7;
P1的二进制表示:1010
P2的二进制表示:0111;两者与运算是:0010:即:2;
或运算:操作数的二进制对应位进行或运算:1111:即:15;
异或:结果:1101:13;
P1的非:0101:5。
位移运算:右移>>,左移<<
Var1=var2<<var3;表示var2左移var3个位数
Var2=5;var3=2;具体过程是:0101—>010100:得到20;
六、位运算和逻辑运算的赋值运算
操作数:op1,op2
运算符 | 表达式 | 结果 |
&= | op1&=op2 | op1=op1&op2 |
|= | op1!=op2 | op1=op1|op2 |
^= | op1^=op2 | op1=op1^op2 |
>>= | op1>>=op2 | op1=op1>>op2 |
<<= | op1<<=op2 | op1=op1<<op2 |
以上的操作请各位读者自己编程体会。
到此,C#的各种运算基本上介绍完了,但是如果一个表达式有多个操作符,那么不同的操作符的优先权来决定谁先执行,同时在操作的时候是从左边向右边执行。各种操作符的优先权高低如下表所示:
优先级 | 操作符 | 7 | ^, | |
1 | ++,--(前缀).(),+,-,!,~ | 8 | | | |
2 | *,/,% | 9 | && | |
3 | +,- | 10 | || | |
4 | >>,<< | 11 | =,*=,+=,-+.<<=,>>=,&=,^=,|= | |
5 | ==,!= | 12 | ++,--(后缀运算) | |
6 | & |
同时还有一个三目运算:表达式?a:b;
举例说明:int x=4>5? 4 :5;
意思就是:4>5? 是否成立,如果成立那么x=4,否则x=5;
此后开始正式进入C#的学习了,下节开始学习条件语句if和循环语句 for each、for和while。