当前位置: 首页 > 知识库问答 >
问题:

逻辑布尔否定运算符优先级和关联

潘慈
2023-03-14

这是我在StackOverflow上的第一个问题,因此我想以前有人在这里问过,但是我在搜索栏中键入的所有内容都给了我不同的问题。(或者有时根本没有结果!)

我正在学习w3Schools,但我看到了这个看似简单的代码片段,它引发了一小部分问题:

本质上,守则说:

if(! test === FALSE)
  display("test successful!");
else
  display("test failed...")

在这种特殊情况下,“test”在成功时返回字符串,在失败时返回(布尔)FALSE。

以下是在我心中激起的问题。

>

  • 至于条件/if语句开头的感叹号(又名“逻辑非”又名“否定运算符”),是:

    a)应用于括号内的整个语句?,或

    B) 仅与“测试”关联?

    注意:在本例中,否定运算符的关联性可能不会改变结果,但其关联性在以下情况下很重要:(!FALSE | | TRUE),是吗?

    我理解否定运算符如何处理布尔值,但是当遇到(PHP)字符串时,否定运算符的行为如何?

    A) 如果字符串恰好是像“true”或“0”这样的复杂字符串,则否定运算符的行为是否会改变?

    (!test==FALSE)是否与(test!==FALSE)相同?为什么他们不直接使用“!=”?

    这里是实际的代码问题:

    if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
      echo("$email is a valid email address");
    } else {
      echo("$email is not a valid email address");
    }
    

    进一步的PHP问题:在这种情况下,使用filter\u var()比filter\u input()有什么优势吗?为什么w3Schools使用filter_var()而不是filter_input()?

  • 共有1个答案

    曹均
    2023-03-14

    >

    根据doc,空字符串"'0'将被转换为false,否则true

    这是不一样的。当$test等于空字符串"'0'时,这两个条件具有不同的行为。

     类似资料:
    • 问题内容: 下面的两个语句是否等效? 和 我可以使用某种真值表来验证这一点吗? 问题答案: 优先于,因此,即使 与…不同 因为那将被执行为 并且想要使它们相同的是以下内容(使用括号覆盖优先级规则): 这是一个示例说明:

    • 为什么JVM不遵守它自己的规则。以下面的例子为例。 结果是: 而实际结果应该是,根据&运算符是在运算符之前求值的事实: 对于为什么没有正确实现这一点,有一些解释会很好。即使在第二部分周围添加括号,也没有使用正确的优先级。

    • 问题内容: 下面的两个语句是否等效? 和 我可以使用某种真值表来验证这一点吗? 问题答案: 优先于,因此,即使 与…不同 因为那将被执行为 并且想要使它们相同,是以下内容(使用括号覆盖优先级规则): 这是一个示例说明:

    • 本文向大家介绍oracle逻辑运算符与其优先级简介,包括了oracle逻辑运算符与其优先级简介的使用技巧和注意事项,需要的朋友参考一下 Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个 逻辑运算符 意义 and 双值运算符,如果左右两个条件都为真,则得到的值就为真 or 双值运算符,只要左右两个条件有一个为真,则得到的值就为真 not 单指运算符,如果原条件为真,则得到真,如

    • 从高到低顺序如下: ^ not - (一元运算) * / + - ..(字符串连接) < > <= >= ~= == and or

    • 我正在使用熊猫中的布尔索引。 问题是为什么声明: 很好,但是 错误退出? 例子: