gpt4 book ai didi

if-statement - 为什么一个变量与多个值的不相等检查总是返回 true?

转载 作者:行者123 更新时间:2023-11-30 16:57:28 26 4
gpt4 key购买 nike

我的程序中有一个变量v,它可以从值集中获取任何

"a", "b", "c", ..., "z"

我的目标是仅当 v 不是 "x""y""时才执行某些语句z”

我已经尝试过了,

  • 对于类 C 语言(其中相等运算符比较实际字符串值;例如 )

    if (v != "x" || v != "y" || v != "z")
    {
    // the statements I want to be executed
    // if v is neither "x", nor "y", nor "z"
    }
  • 对于类似 Pascal 的语言(例如 )

    IF (v != 'x' OR v != 'y' OR v != 'z') THEN
    -- the statements I want to be executed
    -- if v is neither "x", nor "y", nor "z"
    END IF;

if 条件内的语句始终会被执行。我做错了什么吗?

最佳答案

使用&&/AND/and,而不是||/OR/:

v != "x" && v != "y" && v != "z"

问题

如果始终执行 if block ,则 if block 的条件始终计算为 true。逻辑表达式一定是错误的。

让我们考虑v != "x"|| v != "y"|| v != "z" 对于 v 的每个值。

  • v = "x"时,

    v != "x" 变为 "x"!= "x",这是 false
    v != "y" 变为 "x"!= "y",这是true
    v != "z" 变为 "x"!= "z",这是true

    表达式的计算结果为false ||真实 || true,即true

  • v = "y"时,表达式变为

      "y" != "x" || "y" != "y" || "y" != "z"

    true ||假|| true,即true

  • v = "z"时,表达式变为

      "z" != "x" || "z" != "y" || "z" != "z"

    true ||真实 || false,即true

  • 对于 v 的任何其他值,表达式的计算结果为 true ||真实 || true,即true

或者,考虑真值表:

       │     A          B          C      │
v │ v != "x" v != "y" v != "z" │ A || B || C
───────┼──────────────────────────────────┼──────────────
"x" │ false true true │ true
"y" │ true false true │ true
"z" │ true true false │ true
other │ true true true │ true

如您所见,您的逻辑表达式始终计算结果为true

解决方案

你想要做的是,找到一个逻辑表达式,当

时,其值为 true

(v 不是“x”)并且(v 不是“y”)(v 不是“z”)

正确的结构是,

  • 对于类 C 语言(例如 -(可能需要严格相等运算符 !==)、 )

      if (v != "x" && v != "y" && v != "z")
    {
    // the statements I want to be executed
    // if v is neither "x", nor "y", nor "z"
    }
  • 对于类似 Pascal 的语言

      IF (v != 'x' AND v != 'y' AND v != 'z') THEN
    -- the statements I want to be executed
    -- if v is neither "x", nor "y", nor "z"
    END IF;

德摩根定律

作者:De Morgan's law ,表达式也可以重写为(使用类似 C 的语法)

!(v == "x" || v == "y" || v == "z")

含义

不是((v是“x”)(v 是“y”)(v 是“z”))

这使得逻辑更加明显。

特定语言

某些语言具有用于测试集合中的成员资格的特定构造,或者您可以使用数组/列表操作。

关于if-statement - 为什么一个变量与多个值的不相等检查总是返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com