1.逻辑与(&&)
Console.WriteLine(true && true);//true
Console.WriteLine(true && false);//false
Console.WriteLine(false && false);//false
2.逻辑或(||)
Console.WriteLine(true || true);//true
Console.WriteLine(true || false);//true
Console.WriteLine(false || true);//true
Console.WriteLine(false || false);//false
3.逻辑非(!)
Console.WriteLine(!true);//false
Console.WriteLine(!false);//true
4.短路原则
逻辑与遇假则假,逻辑或遇真则真
int a = 0;
Console.WriteLine(true && a++ < 1);//true
Console.WriteLine(a);//1
a = 0;
Console.WriteLine(false && a++ < 1);//false 遇到false直接返回
Console.WriteLine(a);//0
a = 0;
Console.WriteLine(true || a++ < 1);//true 遇到true直接返回
Console.WriteLine(a);//0
a = 0;
Console.WriteLine(false || a++ < 1);//true
Console.WriteLine(a);//1
5.优先级
优先计算顺序:逻辑非(!) > 逻辑与(&&) > 逻辑或(||)
其他计算顺序:算数运算符(±*/%) > 条件运算符(><==) > 逻辑运算符(!&&||)
int a = -1;
Console.WriteLine(a == 1 || a++ < 0 && ++a > 0);//true
Console.WriteLine(a);//-1
//演变结果
//先计算逻辑与 左侧 a == 1 || -1 < 0 && a++ > 0,a此时为0
//再计算逻辑与 右侧 a == 1 || true && 1 > 0, a此时为1
//得到 逻辑与的结果 a == 1 || true, a此时为1
//最后再计算 逻辑或 true || true, a此时为1