标签: logical-operators

如果你不是浮动的话,会发生什么?

我假设这只返回一个int.还有什么事情我应该知道吗?C/C++的差异?

float a = 2.5;
!a; // What does this return? Int? Float?
Run Code Online (Sandbox Code Playgroud)

c c++ floating-point logic logical-operators

25
推荐指数
2
解决办法
3811
查看次数

为什么JavaScript中的逻辑运算符是关联的?

逻辑AND和OR运算是在JavaScript中只有懒运营三元一起条件运算符.他们使用以下规则进行短路评估测试:

false && anything === false
true || anything === true
Run Code Online (Sandbox Code Playgroud)

这与在Haskell中实现的方式相同:

(&&) :: Bool -> Bool -> Bool
False && _ = False
True  && x = x

(||) :: Bool -> Bool -> Bool
True  || _ = True
False || x = x
Run Code Online (Sandbox Code Playgroud)

但是根据MDN,JavaScript中的逻辑运算符是左关联的.这是违反直觉的.在我的拙见中,他们应该是正确的联想.Haskell做对了.Haskell中的逻辑运算符是正确的关联:

infixr 3 &&
infixr 2 ||
Run Code Online (Sandbox Code Playgroud)

考虑Haskell中的以下表达式:

False && True && True && True
Run Code Online (Sandbox Code Playgroud)

因为&&在Haskell中是正确关联的,所以上面的表达式相当于:

False && (True && (True && True))
Run Code Online (Sandbox Code Playgroud)

因此,表达式 …

javascript haskell logical-operators associativity ecmascript-5

25
推荐指数
2
解决办法
1684
查看次数

给定2个int值,如果一个是负数而另一个是正数,则返回True

def logical_xor(a, b): # for example, -1 and 1
    print (a < 0) # evaluates to True
    print (b < 0) # evaluates to False
    print (a < 0 != b < 0) # EVALUATES TO FALSE! why??? it's True != False
    return (a < 0 != b < 0) # returns False when it should return True

print ( logical_xor(-1, 1) ) # returns FALSE!

# now for clarification

print ( True != False) # PRINTS TRUE!
Run Code Online (Sandbox Code Playgroud)

有人可以解释发生了什么吗?我想做一个班轮:

lambda …
Run Code Online (Sandbox Code Playgroud)

python return logical-operators python-3.x

25
推荐指数
3
解决办法
3418
查看次数

!c运算符,是两个不是吗?

我读这段代码,并有这条线

 switch (!!up + !!left) {
Run Code Online (Sandbox Code Playgroud)

什么是!!运营商?两个逻辑不?

c operators logical-operators

24
推荐指数
3
解决办法
1万
查看次数

C#If语句中条件的执行顺序

下面有两个if语句,它们使用逻辑运算符有多个条件.逻辑上两者都相同,但检查顺序不同.第一个工作,第二个工作失败.

我引用了MSDN来检查是否定义了执行条件的顺序; 但我找不到.

考虑具有&&逻辑运算符的多重检查条件.是否保证始终检查第一个条件,如果不满足,则不会检查第二个条件?

我曾经使用方法1,它运作良好.寻找证明使用的MSDN参考.

UPDATE

参考"短路"评估

  List<string> employees = null;  

  if (employees != null && employees.Count > 0)
  {
        string theEmployee = employees[0];
  }

  if (employees.Count > 0 && employees != null)
  {
        string theEmployee = employees[0];
  }
Run Code Online (Sandbox Code Playgroud)

.net c# conditional short-circuiting logical-operators

24
推荐指数
4
解决办法
2万
查看次数

区别!和〜在c#

当我第一次学习如何编写程序时,我使用了C.(非常基本的命令行应用程序)在这两种语言中你都使用了! - 操作员通常喜欢这样:

    if(!true){
       //false..
}
Run Code Online (Sandbox Code Playgroud)

我想在c#中做一些比特掩码,我想知道'〜'运算符.

现在我有点困惑,因为在我自己的理解!和〜应该做同样的事情.

这适用于c#:

int i = ~0xffffffff; // i = 0
bool j = !true; // j = false
Run Code Online (Sandbox Code Playgroud)

这不是:(但它确实在c中工作,并且完全符合我的预期)

int i = !0xffffffff; // i = 0
Run Code Online (Sandbox Code Playgroud)

那么〜和之间的差异是什么?他们为什么把它们分开?

c# bitwise-operators logical-operators

24
推荐指数
2
解决办法
3366
查看次数

javascript是否有非短路布尔运算符?

在js

(f1() || f2())
Run Code Online (Sandbox Code Playgroud)

将不执行f2,如果f1回报率true通常是除了当它是不是一件好事.有||没有短路的版本?

就像是

var or = function(f, g){var a = f(); var b = g(); return a||b;}
Run Code Online (Sandbox Code Playgroud)

javascript logical-operators

22
推荐指数
1
解决办法
2566
查看次数

NOT(〜)vs NEGATION(!)

#include <iostream>

using namespace std;
int main(int argc, char *argv[]) 
{
   int i=-5;
   while(~(i))
   {
      cout<<i;
      ++i;
   }

 }
Run Code Online (Sandbox Code Playgroud)

输出为-5,-4,-3,-2.不应该打印值直到-1?为什么它只到-2.请解释一下'not'和'negation'运算符之间的区别.当我编写程序时,它们就是bug的来源.

while(i)
Run Code Online (Sandbox Code Playgroud)

我知道循环条件对于正和负i都是正确的,除了0.

while(!i) vs while(~i)
Run Code Online (Sandbox Code Playgroud)

对于'i'的值,上述两个循环是否被执行?

c c++ bitwise-operators logical-operators

22
推荐指数
2
解决办法
7万
查看次数

C编程语言中&&的行为

我是C编程语言的初学者,最近我读过有关Logical AND &&运算符的内容.

我也知道,在C编程语言中,所有非零值都被视为TRUE.

NON-ZERO && NON-ZERO = 1  
NON-ZERO && ZERO = 0  
ZERO && NON-ZERO = 0
ZERO && ZERO = 0  
Run Code Online (Sandbox Code Playgroud)

但是当我处理以下程序时,我没有得到预期的答案.

int main(){  
  int x, y, z;  
  x = y = z = -1;  
  y = ++x && ++y && ++z;  
  printf("x = %d, y = %d, z = %d, x, y, z);  
  return 0;  
} 
Run Code Online (Sandbox Code Playgroud)

我期待着

x = 0, y = 0, z = 0 
Run Code Online (Sandbox Code Playgroud)

但答案是

x = 0, y = 0, …
Run Code Online (Sandbox Code Playgroud)

c operators logical-operators

22
推荐指数
4
解决办法
9764
查看次数

为什么"如果不是(a和b)"比"如果不是或不是b"更快?

一时兴起,我最近测试了这两种方法timeit,看看哪种评估方法更快:

import timeit

"""Test method returns True if either argument is falsey, else False."""

def and_chk((a, b)):
    if not (a and b):
        return True
    return False

def not_or_chk((a, b)):
    if not a or not b:
        return True
    return False
Run Code Online (Sandbox Code Playgroud)

......并得到了这些结果:

 VALUES FOR a,b ->      0,0         0,1         1,0         1,1
        method
    and_chk(a,b)    0.95559     0.98646     0.95138     0.98788
 not_or_chk(a,b)    0.96804     1.07323     0.96015     1.05874
                                            ...seconds per 1,111,111 cycles.
Run Code Online (Sandbox Code Playgroud)

效率的差异在1%到9%之间,总是有利于if not (a and b),这与我的预期相反,因为我理解if not a or not b它将按顺序评估其术语(if …

python if-statement micro-optimization logical-operators python-2.7

22
推荐指数
1
解决办法
3635
查看次数