嗯,我读了很多资料,但他们的定义不同:
。
虽然在理解上一切都是正确的,但我要说的是,第一个是最精确的。还是我搞错了?
发布于 2011-04-15 09:36:00
在C#、Java、C++、C以及其他几种语言中,&&是布尔和运算符的编程语言实现。它旨在说明下列事实(不适用于纯粹的命题逻辑):
计算操作数的操作数( expensive
)。
因此,编程语言中的布尔表达式实际上有四种可能的结果:true、false、"exception“和”无穷循环“。在某些情况下,有两个布尔表达式,其中第二个表达式的成功与否可以通过查看第一个表达式来确定。例如,使用表达式foo != null和foo.bar == 42,我们可以确定如果第一个表达式为false,则第二个表达式将失败。因此,&&运算符被设计为“短-圈”:如果左操作数计算为false,则不计算右操作数。在两个操作数将成功地计算为true或false的所有情况下,此规则产生的结果与实际计算两个操作数的结果相同,但它允许提高性能(因为右操作数可能根本不需要计算)并在不牺牲安全性的情况下增加紧凑性(如果要注意构造表达式,使左操作数“守卫”右操作数)。类似地,如果左操作数计算为true,则||将不会计算右操作数。
一个较短的答案是,虽然&&受到了强烈的启发,但它的设计考虑到了某些编程特性,而a && b的措辞或许应该是“如果a为false,则返回false的表达式,如果a为真,则返回b的值”。
发布于 2011-04-15 09:11:05
连词是"and“的另一个词。所以它们的输出都是正确的。
就实际输出的方式而言,如果第一个参数是假的,&&通常不会计算第二个参数。
https://stackoverflow.com/questions/5674594
复制相似问题