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

为什么我的c!='o'| | c!='“x”条件始终为真?[副本]

黄和怡
2023-03-14

我有一个循环语句,我将使用类似C的语法(C、C、Java、JavaScript、PHP等,都使用类似的语法)来表示:

while (c != 'o' || c != 'x') {
    c = getANewValue();
}

我希望它一直运行,直到我得到一个'o''x',但它永远不会退出,即使c'o''x'。为什么不呢?

我还尝试过使用if

if (c != 'o' || c != 'x') {
    // Show an error saying it must be either 'o' or 'x'
}

但是,即使c'o''x',也总是会显示错误消息。为什么?

共有3个答案

郎羽
2023-03-14

为什么我的是c!='o'||c!='x'条件总是true?

表达式使用逻辑OR运算符(||)组合两个子表达式。如果至少有一个子表达式为true,则表达式为true。为了成为false,它连接的两个子表达式必须是false

子表达式是c!='o'c!='x'

第一个子表达式c!='当c='o'时,o'false。第二个也一样;当c=='x'时,它是false

请注意,它们不能同时为false,因为c不能同时为'o''x'

穆仲卿
2023-03-14

如果(c!='o'

薛弘阔
2023-03-14

条件(c!=“o”| c!=“x”)永远不能为假。如果c'o',则c!='x'将为真,并且满足OR条件。如果c'x',则c!='o'将为真,并且满足OR条件。

你想要

while (c != 'o' && c != 'x') {
    // ...
}

“虽然c不是'o'c不是`'x'.”(例如,两者都不是)。

或者使用德摩根定律,包括:

while (!(c == 'o' || c == 'x')) {
    // ...
}

"虽然它不是真实的(c'o'c'x')..."

 类似资料:
  • //[input type=“text”placeholder=“First Name”class=“form control”ng model=“FirstName”必填项] 下面是我的代码 elemntvalue=驱动程序。FindElement(By.XPath(//input[@placeholder='First Name']); 字符串名称required=elemntvalue。Ge

  • 我正在编写一个安全系统,拒绝未经授权的用户访问。 它按预期授予授权用户访问权限,但也允许未经授权的用户进入! 为什么会出现这种情况?我已经明确声明,只有当等于Kevin、Jon或inbar时才授予访问权限。我也尝试过相反的逻辑,,但结果是一样的。

  • 我看过一些代码,其中人们使用了带有两个“!”的条件子句s 这是我能找到的一些例子。 使用有什么好处超过?

  • 我有一个arraylist,其中添加了以下数字。 然后我使用下面的代码遍历列表并在打印前求和。 它正在打印出一个值6。有人知道发生了什么吗?或者有人能解释我在这里做错了什么吗?感谢您的时间,如果有什么我可以补充澄清的,请不要犹豫。

  • 我将我的按钮放入一个数组中,但当我调用它们时,它们不在那里。如果我打印出阵列,我会得到: 我只是不知道我做错了什么。

  • 为什么imread总是报错[ WARN:0@0.165] global loadsave.cpp:248 cv::findDecoder imread_(''): can't open/read file: check file path/integrity 尝试了各种:放在同一目录调用,单引号调用,更改图片类型(png),都是报错。恳请大佬帮助。