问题标签 [boolean-logic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - AS3/JavaScript if 语句用逗号代替 & &
这在 ActionScript 3 和 JavaScript 中运行。为什么?我知道如何&&
工作||
,但有一份清单吗?这是特定于 AS3 的吗?这是其他语言的吗?我是一个嘴巴呼吸的 PHP/AS2 程序员。还是每个人都已经知道这一点,而我是一个无法正确阅读文档的工具?
AS3
JavaScript
php - 如何让 PHP 避免延迟评估?
关于 PHP 评估布尔表达式的方式,我有一个有趣的问题。例如,当你有,
或者
PHP 首先检查$expression1
计算结果是否为true
. 如果不是这种情况,则$expression2
简单地跳过,以避免不必要的计算。在我正在编写的脚本中,我有:
$validator->valid("text")
即使第一个语句的计算结果为假,我也需要对第二个语句 ( ) 进行评估。我想问你是否有一些简单的方法可以强制 PHP 总是评估这两个语句。谢谢!
refactoring - 重构布尔表达式的工具
我正在寻找一种工具来重构布尔表达式。我有这样的表达
该工具应该能够简化表达式,例如提取上例中的子表达式“c or d”。有没有免费的计算机代数系统可以做到这一点?
目前我想手动重构表达式,用一个小haskell quickcheck脚本证明等价。
assembly - 访问汇编条件代码
CF:进位标志
ZF:零标志
我目前正在阅读一本关于使用 AT&T 语法在 linux 平台上进行 intel x86 汇编的书,书中说,setbe D的效果相当于:
D ← CF & ~ ZF
我明白这一点,但它可以简单地写成:
D ← CF | 采埃孚
这仅在 CF/ZF 为 1/1 或 1/0 时与 ~ZF&CF 不同。哪个更准确?
sql - 复杂 SQL where 子句:是否分解逻辑
我有一个复杂的 SQL where 子句,由于需求更改而变得更加复杂。有四组基本案例,每组都有其他因素的不同组合。将四个案例作为 where 子句的单独分支,并在每个分支中重复冗余标准,这样更具可读性(在我看来)。但我不知道数据库引擎将如何优化它。
这是冗余形式的表达式。我已经用字母替换了实际标准。A 是“分支”标准,有四种形式。field='value'
除非另有说明,否则所有表达式均采用 形式。
除 A4 之外的所有 A 都采用field in ('value1','value2')
. D 是field > 'value'
。G 的形式为field not in (subquery)
。
这是表达式,考虑到(我认为)它最不冗余的形式。
我的问题是我是否应该将此表达式分解为最简单(最少冗余)的逻辑形式,或者是否可以将其保留为更冗余但也更易读的形式。目标数据库是 Sybase,但我一般想知道 RDMBS 的答案。
mask - 替换位范围
CS中的任何二年级学生都应该能够回答,但我似乎无法理解它......
我有一组位,我需要用不同的组替换一些位。在一个简化的例子中:
10101010 - 原始位设置
00001111 - 显示替换位置的掩码
00001100 - 新位值
10101100 - 结果位设置
另一个例子:
10101010 - 原始位设置
00110011-面具
11111111 - 新位值
10111011 - 结果位设置
通过遍历位来做到这一点是微不足道的。
是否可以使用布尔逻辑(AND、OR 等)来做到这一点?
c++ - “布尔短路”是由标准规定还是主要用作优化?
考虑这个
在我使用过的所有编译器上,这是非常安全的。即布尔表达式的第一部分将评估为false,因此不会尝试对 Method() 的调用,因为评估第二部分是多余的。
这是因为大多数编译器会优化第二部分的评估,还是它是 C/C++ 标准的规定行为?
language-features - 使用 AND 或 && 有什么好处?
目前,我正在使用 && 和 || 而不是 AND 和 OR,因为这就是我被教导的方式。然而,在大多数语言中,两者都是有效的语法。任何语言中的一个或另一个有什么优势吗?
我确实试图搜索这个问题,但这有点难。它没有正确解释我的输入。
haskell - 在 Haskell 中为逻辑表达式生成真值表
第一部分是具有以下类型签名的评估函数:
这将逻辑表达式和赋值对列表作为输入,并根据提供的布尔赋值返回表达式的值。赋值列表是一个不同的对列表,其中每对包含一个变量及其布尔赋值。也就是说,如果您将表达式 A ∧ B 和赋值 A = 1 和 B = 0 传递给函数,则您的函数必须返回 0(这来自数字逻辑设计,0 对应于 false,1 对应于 true)。
到目前为止,这是我设法做到的:
下一部分是定义generateTruthTable
,这是一个以逻辑表达式作为输入并以赋值对列表的形式返回表达式的真值表的函数。也就是说,如果将表达式 E = A ∧ B 传递给函数,则函数必须返回 A = 0, B = 0, E = 0 | A = 0, B = 1, E = 0 | A = 1, B = 0, E = 0 | A = 1,B = 1,E = 1。
我对语法并不完全熟悉,所以我不知道如何返回列表。