标签: logical-operators

是否要求短路逻辑运营商?和评估顺序?

ANSI标准是否要求逻辑运算符在C或C++中被短路?

我很困惑,因为我记得K&R的书说你的代码不应该依赖于这些操作被短路,因为它们可能没有.有人可以指出标准中的哪个位置逻辑操作始终是短路的吗?我最感兴趣的是C++,C的答案也很棒.

我还记得读(不记得在哪里)评估顺序没有严格定义,所以你的代码不应该依赖或假设表达式中的函数将按特定的顺序执行:在语句的末尾所有引用的函数将被调用,但编译器可以自由选择最有效的顺序.

标准是否表明该表达式的评估顺序?

if( functionA() && functionB() && functionC() ) cout<<"Hello world";
Run Code Online (Sandbox Code Playgroud)

c c++ operator-precedence short-circuiting logical-operators

137
推荐指数
5
解决办法
3万
查看次数

是否存在重载&&和||的原因 不要短路?

运算符的短路行为&&,并||是程序员的好工具.

但为什么他们在超载时会失去这种行为?我理解运算符只是函数的语法糖,但操作符bool有这种行为,为什么它应该限制在这种类型?这背后有任何技术推理吗?

c++ operator-overloading short-circuiting logical-operators c++11

136
推荐指数
8
解决办法
1万
查看次数

布尔运算符的差异:&vs &&和| vs ||

我知道规则&&,||但是什么是&|?请以一个例子向我解释这些.

java boolean-logic bitwise-operators logical-operators

104
推荐指数
5
解决办法
18万
查看次数

逻辑运算符,|| 还是OR?

我记得有一段时间关于逻辑运算符的回顾,在这种情况下OR,使用||优于or(反之亦然).

当我回到我身边时,我只能在我的项目中使用它,但我不记得推荐哪个运算符,或者它是否真实.

哪个更好?为什么?

php operators logical-operators or-operator

97
推荐指数
4
解决办法
14万
查看次数

91
推荐指数
5
解决办法
13万
查看次数

Java逻辑运算符短路

哪一组是短路的,这究竟是什么意味着复杂的条件表达式是短路的?

public static void main(String[] args) {
  int x, y, z;

  x = 10;
  y = 20;
  z = 30;

  // T T
  // T F
  // F T
  // F F

  //SET A
  boolean a = (x < z) && (x == x);
  boolean b = (x < z) && (x == z);
  boolean c = (x == z) && (x < z);
  boolean d = (x == z) && (x > z);
  //SET B    
  boolean aa = (x …
Run Code Online (Sandbox Code Playgroud)

java logical-operators

90
推荐指数
2
解决办法
13万
查看次数

逻辑运算符的书面版本

是我见过的唯一一个地方and,or并被not列为C++中的实际运算符.当我在NetBeans中编写一个测试程序时,我得到了红色下划线,好像有一个语法错误,并认为该网站是错误的,但它是错误的NetBeans,因为它编译并按预期运行.

我可以看到!受到青睐,notand&& 的可读性or似乎比他们的语法兄弟更大.为什么这些版本的逻辑运算符存在,为什么看似没有人使用它?这是真正有效的C++还是与语言中包含的C的某种兼容性?

c++ language-features logical-operators

86
推荐指数
4
解决办法
1万
查看次数

做短路运营商|| 和&&存在可空的布尔?RuntimeBinder有时会这么认为

我读上的C#语言规范条件逻辑运算符 ||&&,也被称为短路逻辑运算符.对我来说,似乎不清楚这些是否存在可空的布尔值,即操作数类型Nullable<bool>(也是书面的bool?),所以我尝试使用非动态类型:

bool a = true;
bool? b = null;
bool? xxxx = b || a;  // compile-time error, || can't be applied to these types
Run Code Online (Sandbox Code Playgroud)

这似乎解决了这个问题(我无法清楚地理解规范,但假设Visual C#编译器的实现是正确的,现在我知道).

但是,我也想尝试dynamic绑定.所以我尝试了这个:

static class Program
{
  static dynamic A
  {
    get
    {
      Console.WriteLine("'A' evaluated");
      return true;
    }
  }
  static dynamic B
  {
    get
    {
      Console.WriteLine("'B' evaluated");
      return null;
    }
  }

  static void Main()
  {
    dynamic x = A | B;
    Console.WriteLine((object)x);
    dynamic y …
Run Code Online (Sandbox Code Playgroud)

c# nullable short-circuiting logical-operators dynamictype

84
推荐指数
2
解决办法
3302
查看次数

奇怪地使用"和"/"或"运算符

我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义

背景是:

def fn(*args):
    return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)

我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?

10 and 7-2
Run Code Online (Sandbox Code Playgroud)

返回5.同样,更改和将导致或将导致功能更改.所以

10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)

会回来10.

这是合法/可靠的风格,还是有任何问题?

python operators logical-operators

84
推荐指数
4
解决办法
9622
查看次数

Pandas中的元素逻辑OR

我想要元素方面的逻辑OR运算符.我知道"或"本身并不是我想要的.

我知道AND对应于&和不对~.但是OR怎么样?

python boolean-logic logical-operators boolean-operations pandas

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