Unity基础之C#入门篇笔记8:逻辑运算符,位运算符,三目运算符

Unity基础之C#入门篇笔记8:逻辑运算符,位运算符,三目运算符

  • 逻辑运算符
    • 1.逻辑与
    • 2.逻辑或
    • 3.逻辑非
    • 4.混合使用优先级问题
    • 5.逻辑运算符短路规则
  • 位运算符
    • 1.位与 &
    • 2.位或 |
    • 3.异或 ^
    • 4.位取反 ~
    • 5.左移<< 和 右移 >>
  • 三目运算符
    • 1.基本语法
    • 2.具体使用

逻辑运算符

1.逻辑与

符号:&& (并且)
规则:对两个bool值进行逻辑运算(有假为假,同真为真)

bool result = true && false;
Console.WriteLine(result);//打印结果为 false
result = true && true;
Console.WriteLine(result);//打印结果为 true
result = false && true;
Console.WriteLine(result);//打印结果为 false

//bool相关的类型 bool变量 条件运算符
//逻辑与运算符优先级 低于 条件运算符 算术运算符
int i = 3;
result = i > 1 && i < 5;
Console.WriteLine(result);//打印结果为 true

2.逻辑或

符号:|| (或者)
规则:对两个bool值进行逻辑运算(有真则真,同假为假)

bool result = true || false;
Console.WriteLine(result);//打印结果为 true
result = true && true;
Console.WriteLine(result);//打印结果为 true
result = false && true;
Console.WriteLine(result);//打印结果为 true
result = false && false ;
Console.WriteLine(result);//打印结果为 false 

//bool相关的类型 bool变量 条件运算符
//逻辑或运算符优先级 低于 条件运算符 算术运算符
int i = 3;
result = i > 10 || i < 5;
Console.WriteLine(result);//打印结果为 false 

3.逻辑非

符号:!
规则:对两个bool值进行逻辑运算(真变假,假变真)

result = !false;
Console.WriteLine(result);//打印结果为 true
result = !true ;
Console.WriteLine(result);//打印结果为 false 
result = !!true ;
Console.WriteLine(result);//打印结果为 true 

//逻辑非的运算符较高
int i = 3;
//result = !i > 2;//报错
result = !(i > 2);
Console.WriteLine(result);//打印结果为 false 

4.混合使用优先级问题

规则:!(逻辑非) 优先级最高 ,&&(逻辑与)优先级高于||(逻辑或)
逻辑运算符优先级 低于 算术运算符 和条件运算符(逻辑非除外)

bool gameOver = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;
bool result;
result = gameOver || hp < 0 && !isDead || isMustOver;
Console.WriteLine(result);//打印结果为 true

5.逻辑运算符短路规则

int i = 1;
bool result;
//||(有真则真)  &&(有假则假)
//只要逻辑与或者逻辑或 左边满足条件,则抛弃后面,不去计算(短路)
//真||? 逻辑或遇见第一个判断条件为真,则该结果肯定为真,则抛弃后面,不去计算
result = i > 0 || ++i >= 1;
Console.WriteLine(i);//打印结果为 1
Console.WriteLine(result);//打印结果为 true

//真&&? 逻辑与遇见第一个判断条件为假,则该结果肯定为假,则抛弃后面,不去计算
result = i < 0 && ++i > 1;
Console.WriteLine(i);//打印结果为 1
Console.WriteLine(result);//打印结果为 false

位运算符

主要用数值类型进行计算,将数值转换为2进制,再进行位运算

1.位与 &

符号:&
规则:连接两个数值进行位运算,将数值转为2进制(对位运算 有0则0)

int a = 1;//001
int b = 5;//101
//连接两个数值进行位运算,将数值转为2进制(对位运算 有0则0)
//   0 0 1
//&  1 0 1
//   0 0 1    = 1
int c = a & b;
Console.WriteLine(c);//打印结果为 1

a = 3;//    011
b = 19;// 10011
//    0 0 0 1 1
//&   1 0 0 1 1
//    0 0 0 1 1
c = a & b;
Console.WriteLine(c);//打印结果为 3


//多个数值进行位运算 没有括号时 从左到右 依次计算
a = 1;//    001
b = 5;//    101
c = 19;// 10011
//   0 0 0 0 1
//&  0 0 1 0 1
//   0 0 0 0 1
//&  1 0 0 1 1
//   0 0 0 0 1
int d = a & b & c;
Console.WriteLine(d);//打印结果为 1

2.位或 |

符号:|
规则:连接两个数值进行位运算,将数值转为2进制(对位运算 有1则1)

int a = 1;//001
int b = 3;//011
//连接两个数值进行位运算,将数值转为2进制(对位运算 有0则0)
//   0 0 1
//&  0 1 1
//   0 1 1    = 1+2 = 3
int c = a | b;
Console.WriteLine(c);//打印结果为 3

//多个数值进行位运算 没有括号时 从左到右 依次计算
a = 5;//    101
b = 10;//  1010
c = 20;// 10100
//   0 0 1 0 1
//&  0 1 0 1 0
//   0 1 1 1 1
//&  1 0 1 0 0
//   1 1 1 1 1  = 1+2+4+8+16 = 31
int d = a & b & c;
Console.WriteLine(d);//打印结果为 31

3.异或 ^

符号:^
规则:连接两个数值进行位运算,将数值转为2进制(对位运算 相同为0 不同为1)

int a = 1;//001
int b = 5;//101
//  001
//^ 101
//  100
Console.WriteLine(a^b);//打印结果为 4 

a = 10;//1010
b = 11;//1011
int c = 4;// 100
//   1010
//^  1011
//   0001
//^  0100
//   0101
Console.WriteLine(a^b^c);//打印结果为 5

4.位取反 ~

符号:~
规则:写在数值前面 将数值转为2进制(对位运算 0变1,1变0)

int a = 5;//0000 0000 0000 0000 0000 0000 0000 0101
//int类型(有符号整型)4个字节 32位  第一位位符号位
//~a  1111 1111 1111 1111 1111 1111 1111 1111 1010
//转为十进制需要知道反码补码知识
int c = ~a;
Console.WriteLine(~c);//打印结果为 -6

5.左移<< 和 右移 >>

符号:左移<< ; 右移 >>
规则:让一个数的2进制数进行左移和右移

//(左移几位 右侧加几个0)
int a = 5;// 101
int c = a << 5;
//1位 1010
//2位 10100
//3位 101000
//4位 1010000
//5位 10100000 = 32+128 =160
Console.WriteLine(c);//打印结果为 160

//(右移几位 右侧去掉几个数)
a = 5;//101
c = a >> 2;
//1位 10
//2位 1
Console.WriteLine(c);//打印结果为 1

三目运算符

1.基本语法

套路:三个空位 两个符号
固定语法:空位 ? 空位 : 空位 ;
关键信息:bool类型 ? bool类型为真返回内容:bool类型为假返回内容;
注意:三目运算符会有返回值,这个返回值类型必须一致,并且必须使用!

2.具体使用

string str = true ? "条件为真" : "条件为假";
Console.WriteLine(str);//打印结果为 条件为真

string str = false ? "条件为真" : "条件为假";
Console.WriteLine(str);//打印结果为 条件为假

int a = 5;
//str = a < 1 ? "a>1" :123;//报错,该返回值类型必须一致
str = a < 1 ? "a>1" : "a不满足条件";
Console.WriteLine(str);//打印结果为 a不满足条件


泰课在线 学习笔记

你可能感兴趣的:(unity基础之c#入门笔记)