首先说明,算数运算符的优先级大于逻辑运算符。
把这个单独拿出来记录一下,是因为他和PHP不一样。
不能习惯的使用PHP中的那套对于C#的逻辑运算符的逻辑。
1:&& 逻辑与运算符
实例:
bool a = true; bool c = true; bool b = false; bool d = false; if(a && c){ Console.WriteLine(1); } if(a && b){ Console.WriteLine(2); } if(a && d){ Console.WriteLine(3); } if(b && d){ Console.WriteLine(4); }
以上的输出结果只有1.重点来了
在PHP中,同真为真,同假也为真 在C#中,同真为真,同假为假。
2:|| 逻辑或运算符
实例:
bool a = true; bool c = true; bool b = false; bool d = false; if(a || c){ Console.WriteLine(1); } if(a || b){ Console.WriteLine(2); } if(a || d){ Console.WriteLine(3); } if(b || d){ Console.WriteLine(4); }
以上算式输出结果为123;
这个与PHP中的逻辑是一样的,只要有一个为真就是真。
两个都是假,才为假。
3:! 逻辑非运算符:说白了就是取反
bool a = true; bool c = true; bool b = false; bool d = false; if(!(a || c)){ Console.WriteLine(1); } if(!(a || b)){ Console.WriteLine(2); } if(!(a || d)){ Console.WriteLine(3); } if(!(b || d)){ Console.WriteLine(4); }
以上算式结果输出为4
上边已经说过。前三个等式为真,取反之后为假,所以,没有输出。只有最后一个算式,本身为假,取反之后为真。
最后总结一下:
& 和 &&:
相同点 : 两者都是表达当左右两边操作数都为真时,才为真.
不同点 : &运算符需要判断两边的操作数,而&&运算符则是根据第一个操作数的真假进而判断第二个操作数,也就是说当第一个操作数为假时,就不会再判断第二个操作数了,因为第一个操作数为假也就意味着无论第二个操作数真假,返回的结果都为假.
| 和 ||:
相同点 : 两者都是表达当左右两边操作数有一个为真时,就返回真.
不同点 : |运算符需要判断两边的操作数,而||运算符则是根据第一个操作数的真假进而判断第二个操作数,也就是说当第一个操作数为真时,就不会再判断第二个操作数了,因为第一个操作数为真也就意味着无论第二个操作数真假,返回的结果都为真.