【C#学习笔记】【4】除了加减乘除,还有别的运算么(算数运算符与逻辑运算符)

本节的内容有点枯燥,但是很简单,记住就行,就像小学时我们刚学加减乘除混合运算那样。记住运算的优先性。(当然,如果你有C语言或其他基础,可以跳过,但是我不建议你跳过)

算数运算符

什么是算术运算符呢?当然就是做数学算数的啊,比如上节用到的加减乘除。下面介绍一些常用的运算符(+-*/我就不说了)。

取余数运算符%

%可以当作运算符用,其含义是取余数,也叫求模运算。例子如下:

int a=5;
int b=3;
int c=a%b;   //即5被3整除求出余数,结果当然是2了

Console.WriteLine(c);


//运行结果为2

 

偷懒运算符+=,-=,*=,/=,%=

这些运算符长得有点奇葩,但是含义很好理解,我先写个例子:

int a = 5;
a += 2;
Console.WriteLine(a);
a -= 2;
Console.WriteLine(a);
a *= 2;
Console.WriteLine(a);
a /= 2;
Console.WriteLine(a);
a %= 2;
Console.WriteLine(a);

如果我在这里告诉你,a+=2相当于是a=a+2的话,结果也就是7,那么其他的你能猜到么?

我想你猜到了,这也是我为什么称这类运算符为偷懒运算符的原因,他可以简化很多语句的写法。当然,你不知道这些运算符不会影响你做其他的,因为,他只是简写。

晕晕的运算符++,--

其实,++和--理解起来一点都不难,只是他们在某些情况下会令你十分晕。

先来说一下其含义吧,++相当于+=1,也就是自身增加1,--就是自减1喽。例如下面的程序:

int a=0;
a++;   //即a=a+1;也是a+=1;

Console.WriteLine(a);

//运行结果是1

上面的例子中,我把++写在了变量的后面。读到这里,是不是读出些画外音,难道++还可以写在前面?你说对了。见下面的例子:

int a=0;
++a;

Console.WriteLine(a);

//运行结果为1

看到这里,是不是感觉郁闷呢,两种写法并没有什么区别么,结果都相同。那我下面再写一个例子:

int a = 0;
int b;
int c = 0;
int d;
b = a++;
d = ++c;

Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);

你运行上面的代码了么?如果没有,你可以先猜猜结果。结果如下

2015-07-17_130414

是不是和预想的结果不一样呢?我们运行的结果,a,b,c,d分别是1,0,1,1 。为什么会出现上面的情况?这就是我说的会让人晕的运算符。下面我详细解释一下。

如果++和--运算符在变量的前面,那么,变量会先进行自增自减,然后再参与整个的运算。如果出现在变量的后面,那么变量会先进行运算,在进行自增或者自减,结合上面的例子分析一下。

b=a++;这一句,由于自增运算符出现在了变量a的后面,所以,变量a先参与运算,也就是b=a这样的赋值运算,此时的a=0,然后a才自增1 。也就出现了结果中的a=1,b=0;

d=++c;这一句,自增运算符出现在了变量前面,所以,变量先进行了自增也就是c=1,然后又赋值给d,所以c和d都等于1 。

你还在晕么?自己输入代码试试。算数运算符我就介绍这么多。

逻辑运算符(关系运算符)

高中数学学过简单逻辑运算吧,在集合的那一部分。简易逻辑也就是与或非了。

先说个前文提到的,你还记得是什么吗?相等运算符==

==相等运算符

前面介绍过了,==会判断左边的是否等于右边,如果相等,结果是true,如果不等,结果是fale,示例如下。

bool b;
b=3==2;
Console.WriteLine(b);
b=3==3;
Console.WriteLine(b);

//运行结果第一个为false,第二个为true

为什么用bool类型变量存放结果呢?思考一下,存放真假的变量类型是什么?

> ,< ,>=,<=,!=运算符

有人说,前两个我见过,大于和小于,那么后三个是什么呢?那就是大于等于,小于等于,不等于咯。因为我们在键盘上不容易输入≤,≥,≠这三个符号。至于示例程序,我就省略了,和上一个一样,换一下符号就OK了。

&&,||,!运算符

以上三个分别为逻辑且,逻辑或,逻辑非,他们是用来连接两个bool类型的值,并且给出最终运算值,其运算关系如下表:

运算符

结果

备注

&&

true

true

true

全真即真

false

false

false

有假即假

false

true

false

true

false

false

||

false

false

false

全假即假

true

true

true

有真即真

false

true

true

true

false

true

!

-

true

false

真变假

-

false

true

假变真

上面的表叫做真值表,下面举个简单的例子:

bool b;
int x = 2;
int y = 3;
int z = 2;

b = x > y && x >= z;
Console.WriteLine(b);

b = x > y || x >= z;
Console.WriteLine(b);

b = ! (x > y);
Console.WriteLine(b);

猜一下运行结果,并且自己运行程序验证一下吧!

三元运算符 ?:

这个运算符长得很奇葩,又是问号又是冒号的,下面我先写个例子,再说说这个干什么的:

int a = 0;
int b = 1;
int max = a > b ? a : b;
int min = a < b ? a : b;

Console.WriteLine(max);
Console.WriteLine(min);

//运行结果,第一个1,第二个0

是不是看出些眉目,我分别找出了a和b中的最大值和最小值。那么这个三元运算符是干什么的呢?

问号前是一个逻辑表达式(就是带逻辑运算符的式子了),如果这个逻辑表达式的结果是true,那么程序会跳到?和:之间执行,如果问号前为false,那么直接跳到:后面执行。下面解释一下上面程序中取最大值的算法。

先是a>b一个逻辑判断,如果真,也就是a大于b了,那么,就执行?后面的a,也就是max=a,如果a>b是假的,那么最大值就是b,也就是:后面的,故max=b。

刚接触这个有点难以理解,我们只需要记住有这么个运算符就行了。在以后的例子中会再提到。

运算符的优先性(混合运算的优先法则)

在下表中列出的优先级从高到低(比如乘除的优先级高于加减)

运算符 说明
x++,x-- 后自增自减
+x,-x,!x,++x,--x 正号,负号,非,前自增,前自减
*,/,% 乘法,除法,取余
+,- 相加,相减
>,<,>=,<= 大于,小于,大于等于,小于等于
==,!= 相等,不相等
&&,||,?: 逻辑且,逻辑或,三元运算符
= 赋值运算符
+=,-=,*=,/=,%= 复合赋值运算

如果出现同级的运算符,则按照从左到右的顺序计算。

当然,你可以用()来改变运算顺序,就像我们数学里的括号。需要注意的是,小括号外面还可以使用小括号,而不是中括号或者大括号。

在实际运用中,如果不记得运算顺序,我们可以添加括号,来保证我们的运算结果和我们的预想结果相同。

变量命名方式(上节的补充)

这部分本来应该在前文写,由于怕内容过多,写在了今天的内容里。

如果你学过C语言你可能有这样的体会,声明变量时,一会儿,a,一会儿又是b的,等一会儿回头看,a是啥玩意儿来着?所以给变量起个好的名字,有助于我们理解程序,也能统一代码风格。下面讲两种常见的命名方式。(如果你有更好的方法或者不采用一下方法,那我也没招)

Pascal命名方式(帕斯卡)

在这种方式中,我们将变量中的每个单词的首字母大写,如UserName(用户名),StudentNumber(学号),是不是很直观的就能知道变量的含义呢?当然,我们的变量不采用这种命名方式,这种方式用在以后学的类,接口,方法,属性中用。

Camel命名方式(骆驼)

这种方式和上一种的区别就是首单词的首字母小写,如userName,studentNumber。这种方式是我们给变量命名的常用方式。

合法的变量名称

不是任意字符都可以作为变量名称的。只能是字母或者下划线(_)开头,后面可以接任意的字母和数字还有下划线,至于长度,你自己一个变量名称写上几百个字母能记得住么?还有就是不要用关键字做变量名称,例如我们前面学的int,double这些,以后还会学到一些。要注意,C#会严格区分大小写,UserName和userName是两个变量。

总结

  1. 算数运算符指的是什么,有哪些常用的
  2. ++和--在变量前后的区别
  3. 什么是逻辑运算符,都有哪些
  4. 了解三元运算符,他是唯一的一个
  5. 运算符的优先性
  6. 补充的变量命名的问题
posted @ 2015-07-17 14:34  鹏哥,一个业余爱好者  阅读(2686)  评论(0编辑  收藏  举报