黑马程序员 自学05C#编程基础之关系运算符与逻辑运算符

2016-07-06
 ------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

算术运算符

2014/3/22

一、自加自减:

Age++;age - - ;(一元表达式)

有前加:++age和后加age++

eg:int sum=age++ - 10;

★后加的意思:age -10之后再age++;  sum= age – 10; age=age + 1 ;

 

总之,不管是++age还是age++,经过运算后,age= age + 1;

 

一元运算符优先级高于二元运算符。

 

复合运算符(复合赋值运算符” =”)

1.+=:age+=3→age=age+3

2.- =:age-=3→age=age – 3

3.*=:age*=3→age=age*3

4./=:age/=3→age=age/3

5.%=:age%=3→age=age%3

 

能够改变变量值的符号:

1.      = ;

2.      ++/ - - ;

3.      +=/ - =/ /= / %= ;

 

实际上,只有= ++/ - -能够改变变量值,第三个是一和二的派生。

 

关系运算符(比较运算)(六个)

1.      <    >

2.      = = 等于 != 不等于

3.      >=  <=

 

关系表达式是由上面关系运算符连接的式子。

第六种数据类型

String char

Double decimal int

Bool类型(布尔类型)

Bool类型值只有两个

真:true (表达式成立,此表达式为true)

假:false

注意:

相同类型比较;

参与运算的类型相同,或者可以自动转换。

 

关系表达式(>  == <=)的运算结果为bool类型

 

逻辑运算符:(由此三个运算符连接的表达式为逻辑表达式)

1.      && 与

2.      ||  或

3.      !  非

 

逻辑与运算:

eg:表达式1&&表达式2(二元)

先关系预算再逻辑运算(eg:a>b||b<=c)

 

逻辑语连接的两个表达式,要能够求解称bool类型,一般情况下都是关系表达式。

 

整个逻辑与运算的结果也是bool类型。

 

逻辑与运算(&&)

表达式1

表达式2

逻辑与结果

True 

True 

True 

True  √

False ×

False ×

False ×

True  √

False ×

False ×

False ×

True 

 

逻辑或运算(||)

表达式1

表达式2

逻辑或结果

True  √

True  √

True  √

True  √

False ×

True  √

False ×

True  √

True  √

False ×

False ×

False ×

 

优先级:逻辑与(&&)  > 逻辑或(||)

 

!是一元的

逻辑非:(一元运算符)

用法:bool类型的表达式前+”!”    !(bool类型表达式)

作用:取反

           若bool结果为true         !true=false

 

 

&&与||的短路

Bool ×× = ×××&&×××     (审查放行)

            √   →   √

            ×  stop  ?

Bool ×× = ××× || ×××    (放水考核)

              ×  →   √

              √  stop  ?

 

 

If结构

If结构的基本语法:

 

If(条件)(条件:关系表达式/逻辑运算符)

     执行语句;

 

执行过程:

首先判断条件的结果,如果条件为true,则执行语句;如果条件为false,则跳过语句,执行后面的命令。

 

注意:

1.      If后面括号中的条件,要能计算成一个bool类型的值;

2.      默认情况下,if语句只能带一句话,即和if语句有关系的条件语句。

eg:

if()

Console.WriteLine(“语句”)//if只带这一句(默认)

Console.WriteLine(“ ”);//此句和if无关

 

If带多句话,则可以用{ }把想让if带的多句话括起来,组成语句块。

If(   )                 if(   )

{                     {

};   √                }     √

If(   )                 else

{                     {

}                     }

 

If和if之间要有分号,if-else之间无分号


号外:

2014/3/30

 

三元表达式:

表达式1?表达式2:表达式三;

a>b?a:b

执行过程:

首先计算表达式1,表达式1是一个能够计算成bool类型的值。

若表达式1的值为true,则表达式2的值作为整个表达式的值;

若表达式1的值为false,则表达式3的值作为整个表达式的值。

 

Int max = a>b?a:b;

Console.WriteLine(max);

 

也可以写为:

 

Console.WriteLine(a>b?a:b);

 

注意:

在三元表达式中,表达式2和表达式3的类型一定要相同/相兼容。(自动转换)

 

练习:

练习一:算术运算符,符合运算符,bool类型

            #region 自加自减 C#中一元运算符一般情况下大于二元运算符的优先级。             int var1, var2 = 5, var3 = 6;                          //var1 = var2++ * --var3;             //var1=25,var2=6,var3=5;             var1 = ++var2 * var3--;             //var1=36,var2=6,var3=5;             Console.WriteLine("{0},{1},{2}",var1,var2,var3);             Console.ReadKey();             #endregion              #region 复合运算符             int age = 18;             age += 3;              Console.WriteLine(age);             Console.ReadKey();               #endregion              #region bool类型 compare:比较。              int zhangsanAge = 20, lisiAge = 18;             bool compare = zhangsanAge < lisiAge;             Console.WriteLine(compare);             Console.ReadKey();              int elephantsWeight = 1500, mouseWeight = 1;             bool compare = elephantsWeight >= mouseWeight;             Console.WriteLine(compare);             Console.ReadKey();              int rabbitLife = 3, tortoiseLife = 1000;             bool compare = rabbitLife != tortoiseLife;             Console.WriteLine(compare);             Console.ReadKey();              int myAge = 20, yourAge = 20;             bool compare = myAge >= yourAge;             Console.WriteLine(compare);             Console.ReadKey();               #endregion

练习二:
            #region 逻辑运算联系 !用在结果时,它否定的是结果,只能用来否定只出现y/n两种情况的类型。              Console.WriteLine("按提示输入整数数字,并按任意键继续。");             Console.Write("你的语文成绩为:");             string chineseScore1 = Console.ReadLine();//int chineseScore1 = Convert.ToInt32(Console.ReadLine()); double chineseScore1 = Convert.ToDouble(Console.ReadLine());             double chineseScore = Convert.ToDouble(chineseScore1);             Console.Write("你的数学成绩为:");             string mathScore1 = Console.ReadLine();             double mathScore = Convert.ToDouble(mathScore1);             Console.ReadKey();              //第一题:bool compare = chineseScore >= 90 && mathScore >= 90;             //第二题:bool compare = chineseScore >= 90 || mathScore >= 90;             bool compare = !(chineseScore < 90) && !(mathScore < 90);             bool compare1 = !(chineseScore < 90) || !(mathScore < 90);              Console.WriteLine(""你的语文成绩和数学成绩都至少大于90为{0}"", compare);             Console.WriteLine(""你的语文成绩或数学成绩至少大于90为{0}"", compare1);             Console.ReadKey();               Console.WriteLine("请输入你想要计算的整数年份并按任意键继续。");             Console.Write("要计算的年份为:");             int year = Convert.ToInt32(Console.ReadLine());             bool compare = year % 400 == 0 || year % 4 == 0 && year % 100 != 0;             Console.WriteLine(""您所输入的年份是闰年"这句话是{0}", compare);             Console.ReadKey();                            #endregion

练习三:
           #region  && || 的短路 result:结果             int numberA = 10, numberB = 6;             //bool result = ++numberA <= 20 && numberB-->=1;             bool result = ++numberA <= 20 || numberB-- >= 1;             Console.WriteLine("{0}  {1}
" + result, numberA, numberB);             Console.ReadKey();                           #endregion

练习四:
           #region if语句练习              Console.WriteLine("请输入张三的考试成绩,按任意键继续。");             int score = Convert.ToInt32(Console.ReadLine());             if (!(score < 90 || score == 90))             {                 Console.WriteLine("张三获得一百元奖励");             }             Console.WriteLine("没事了。");             Console.ReadKey();              Console.WriteLine("请输入你的年龄并按任意键继续。");             Console.Write("你的年龄为:");             int age = Convert.ToInt32(Console.ReadLine());             if (age >= 18)             {                 Console.WriteLine("骚年来搞基咩!~~~");             }             Console.WriteLine("木事了~");             Console.ReadKey();              Console.WriteLine("请输入你的语文和音乐成绩,按任意键继续。");             Console.Write("语文成绩为:");             int chineseScore = Convert.ToInt32(Console.ReadLine());             Console.Write("音乐成绩为:");             int musicScore = Convert.ToInt32(Console.ReadLine());              if (chineseScore >= 90 && musicScore >= 80 || chineseScore == 100 && musicScore >= 70)             // 上面采用&&优先级高于||的原则进行编写并且利用||逻辑运算符二选一通过的特性来完成殊途同归的目的。             {                 Console.WriteLine("恭喜你可以摸到毛爷爷!!");             }             Console.WriteLine("木事了~~");             Console.ReadKey();              Console.WriteLine("请输入你的用户名和密码并按任意键继续。");             Console.Write("请输入用户名:");             string useName = Console.ReadLine();             Console.Write("请输入密码:");             string key = Console.ReadLine();             //下面运用关系运算符可以比较两个同类型的变量或者可以自动转换的变量来进行校对。             if (useName == "admin" && key == "mypass")             {                 Console.WriteLine("欢迎回来。");             }             Console.WriteLine("木事了~~");             Console.ReadKey();             #endregion


------- Windows Phone 7手机开发.Net培训、期待与您交流! -------