zoukankan      html  css  js  c++  java
  • 【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. 补充的变量命名的问题

    本文为原创文章,允许转载,转载时请注明转载自http://www.cnblogs.com/zp646858695尊重作者劳动成果。
    您可以收藏我的博客或者关注和订阅,每天都会发布最新内容

  • 相关阅读:
    轻量级锁和偏向锁等
    桥接模式
    适配器模式
    建造者模式
    2-工厂模式
    Swift
    给视图添加点击波纹效果swift5
    Xcode 支持真机版本路径
    22个常用开源库(most swift)
    Github上关于iOS的各种开源项目集合
  • 原文地址:https://www.cnblogs.com/zp646858695/p/4654404.html
Copyright © 2011-2022 走看看