Console.WriteLine(1 == 1 & 1 == 1);
前后两个判断都会执行.
Console.WriteLine(1 == 1 && 1 == 1);
如果前面的判断为false则不执行后面的判断.直接返回false.
建禅含议用 && 这么做是有原历乎因的贺烂笑.
比如 tb 是一个TextBox
if(tb!=null & tb.Text==""){}
如果tb!=null的值为true,则这么写会出错.
因为不管tb!=null的值为true还是false都会去执行tb.Text=="".而当tb==null的时候是没有tb.Text的.
if(tb!=null && tb.Text==""){}
如果tb!=null的值为false则不会执行后面的判断.
&&和||是用于条件判断,而&和|是位运算。
· 【&】
//相当于二进制减法;
//计算原理:数值转成二进制 > 二进制相减(遇0为0) > 再将二进制计算结果转成数值;
(1&1) = (0001 - 0001 = 0001) = 1
(1&2) = (0001 - 0010 = 0000) = 0
(2&2) = (0010 - 0010 = 0010) = 2
(7&5) = (0111 - 0101 = 0101) = 5
(7&8) = (0111 - 1000 = 0000) = 0
(8&4) = (1000 - 0100 = 0000) = 0
//如亮散搏:true = 0001, false = 0000
(true|false) = (0001 敬祥- 0000 = 0000) = false
(true|true) = (0001 - 0001 = 0001) = true
(false|false) = (0000 - 0000 = 0000) = false
· 【|】
//相当于二进制加法;
//计算原理:数值转成二进制 > 二进制相减(遇1为1) > 再将二进制计算结果转成数值;
(1|1) = (0001 + 0001 = 0001) = 1
(1|2) = (0001 + 0010 = 0011) = 3
(2|2) = (0010 + 0010 = 0010) 掘孙= 2
(7|5) = (0111 + 0101 = 0111) = 7
(7|8) = (0111 + 1000 = 1111) = 15
(8|4) = (1000 + 0100 = 1100) = 12
//如:true = 0001, false = 0000
(true|false) = (0001 + 0000 = 0001) = true
(true|true) = (0001 + 0001 = 0001) = true
(false|false) = (0000 + 0000 = 0000) = false
· 【&&】
//条件与
//其中一方为false则返回false
//左右两方同时为true则返回true
(true&&false) = false
(true&&true ) = true
(false&&false) = false
· 【||】
//条件或
//其中一方为true则返回true
//左右两方同时为false则返回false
(true || false) = true
(true || true ) = true
(false || false) = false
转载自
&和加减乘除一样,可以对整数运算。比如8&4转成2进制是100&010,结果是0氏或兆如
&&只是0(false)和1(true)的运算。可以说是&的一个子集歼猜伍