今天写游戏,因为这个卡了很久,特意写一篇文章来记录一下两者的区别、
首先,它们都是“与”运算符(我以前还不知道有&
)今天写消除类游戏碰巧撞到了,查了下MSDN,把区别贴出来,时时提醒自己。
&&
:
“条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。”
也就是说
[v_act]如果 x 为 false,则不计算 y(因为不论 y 为何值,与操作的结果都为 false)。这被称作为“短路”计算。[/v_act]
&
:
为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。
也就是说
[v_act]如果 x 为 false,会计算 y(但不论 y 为何值,与操作的结果都为 false)[/v_act]
下面的例子最能说明问题
class Demo { static bool one() { Console.WriteLine("one called"); return false; } static bool two() { Console.WriteLine("two called"); return true; } public static void Main() { Console.WriteLine("regular AND:"); Console.WriteLine("result is {0}", one() & two());//这里用的& Console.WriteLine("short-circuit AND:"); Console.WriteLine("result is {0}", one() && two());//这里用的&& } }
输出结果:
regular AND: one called two called result is False short-circuit AND: one called result is False
所以(|) 与 (||) 运算符也是一样的道理~就不另外说了
[!](&) 也可作为一元运算符,返回操作数的地址
发表回复