1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and)。
当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
//a为真,b为假,输出两者其一为假进入 bool a = true; bool b = false; if (a & b) { Console.WriteLine("两者皆为真进入"); } else { Console.WriteLine("两者其一为假进入"); Console.Read(); } //a为假,b为真,输出两者其一为假进入 bool a = false; bool b = true; if (a & b) { Console.WriteLine("两者皆为真进入"); } else { Console.WriteLine("两者其一为假进入"); Console.Read(); } //a为假,b为假,输出两者其一为假进入 bool a = false; bool b = false; if (a & b) { Console.WriteLine("两者皆为真进入"); } else { Console.WriteLine("两者其一为假进入"); Console.Read(); }
//a为真,b为真,输出两者皆为真进入 bool a = true; bool b = true; if (a & b) { Console.WriteLine("两者皆为真进入"); Console.Read(); } else { Console.WriteLine("两者其一为假进入"); Console.Read(); }
2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,如下示例
//&无短路,x为1,不符合x=2,但继续执行 int x = 1; int y = 0; if (x ==2 & y++ > 0) { } Console.WriteLine("y初始值为0,无短路后的值为:" + y); Console.Read();
//&&短路,x不为2,直接跳出,不执行y++ int x = 1; int y = 0; if (x ==2 && y++ > 0) { } Console.WriteLine("y初始值为0,短路后的值为:" + y); Console.Read();
3)&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。